2015-02-07 103 views
2

如果您不熟悉發佈至Dreamfactory API,請查看dreamfactory.com - 一個非常整潔的開源API平臺連接到任何數據庫,無論是MySQL中的NoSQL等通過PHP使用JSON和捲曲

我在使用cURL將JSON發佈到我已經使用Dreamfactory設置的API的過程中遇到了困難。這不是發佈部分,而是Dreamfactory如何在開始調用之前開始使用服務啓動會話。我正在尋求關於如何首先創建會話然後發出POST請求的最佳實踐的建議。

下面是關於如何連接到一個Dreamfactory服務和撥打電話的一些基本信息:

要登錄,您只需發佈到/ REST /用戶/會話 - 足夠

curl -i -k -3 -X POST https://dsp-yourdsp.cloud.dreamfactory.com/rest/user/session \ 
-H "X-DreamFactory-Application-Name: todojquery" \ 
-d '{ "email" : "[email protected]", "password" : "yourpassword" }' 

該服務將方便返回一個session_id,然後你可以將其包含爲一個頭來進行其他API調用。

樣本POST請求,張貼JSON的演示服務

curl -i -k -3 -X POST https://dsp-yourdsp.cloud.dreamfactory.com/rest/db/todo \ 
    -H "X-DreamFactory-Application-Name: todojquery" \ 
    -H "X-DreamFactory-Session-Token: bhc7lov8r41h4cbn6pue1r63gbgh7jf6" \ 
    -d '{ "name" : "curl todo", "complete" : false }' 

我已經成功地使用PHP與此代碼捲曲創建會話:

<?php 

    $data = array("email" => "[email protected]", "password" => "password");                  
    $data_string = json_encode($data); 

    $ch = curl_init('https://api.website.com/rest/user/session');                  
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                  
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);                 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                  
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(                   
     'X-DreamFactory-Application-Name: website-api' 
    ));                             

    $result = curl_exec($ch); 
    $response = json_decode($result); 
    curl_close($ch); 
    var_dump($response->session_id); 



?> 

所以,用返回的數組我可以得到session_id,但我的問題是,什麼是使用session_id並對API進行新調用的最佳方式?下一步是什麼?我是否打開卷曲連接並創建一個POST函數?是否有一個與cURL一個功能,可以創建一個會話和POST在一個鏡頭?

回答

1

是的,您可以繼續使用您的產品,並在下次調用時將會話添加爲X-DreamFactory-Session-Token。如果您要從該腳本執行多個調用,此功能非常有用。

如果您只想打一個電話(或幾個),您還可以利用在版本1.9中添加的Basic HTTP Authentication支持。 (-u myusername:mypassword)或者通過傳遞上面鏈接中提到的授權頭(不要忘記'Basic')。base64_encode($ username。':'。$ password) 。