2015-02-07 107 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) 。