【问题标题】:Posting to Dreamfactory API via PHP with JSON and cURL使用 JSON 和 cURL 通过 PHP 发布到 Dreamfactory API
【发布时间】:2015-04-07 20:49:10
【问题描述】:

如果您不熟悉,请查看 dreamfactory.com - 一个非常简洁的开源 API 平台,可以连接任何数据库,无论是 mysql、nosql 等。

我很难用 cURL 将 JSON 发布到我使用 Dreamfactory 设置的 API。这不是 POST 部分,而是 Dreamfactory 如何要求在您可以拨打电话之前使用服务启动会话。我正在寻求有关如何首先创建会话然后发出 POST 请求的最佳做法的建议。

以下是有关如何连接到 Dreamfactory 服务和拨打电话的一些基本信息:

要登录,您只需发布到 /rest/user/session - 很简单

curl -i -k -3 -X POST https://dsp-yourdsp.cloud.dreamfactory.com/rest/user/session \
 -H "X-DreamFactory-Application-Name: todojquery" \
 -d '{ "email" : "foo@bar.com", "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 和 cURL 和这段代码创建了一个会话:

<?php

    $data = array("email" => "john@website.com", "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 进行新调用的最佳方式是什么?下一步是什么?我是否让 curl 连接保持打开状态并创建一个 POST 函数?是否有 cURL 的多合一功能可以一次性创建会话和 POST?

【问题讨论】:

    标签: php mysql json curl


    【解决方案1】:

    是的,您可以继续现有的,并在下次调用时将会话添加为 X-DreamFactory-Session-Token。如果您要从该脚本进行多次调用,这非常有用。

    如果您只想拨打一个(或几个)电话,您还可以利用 1.9 版中添加的 Basic HTTP Authentication 支持。

    -u 选项应该可以工作(-u myusername:mypassword)或通过上面链接中提到的 Authorization 标头(不要忘记 'Basic' . base64_encode($username . ':' . $password)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-14
      • 1970-01-01
      • 2017-10-22
      • 2019-06-03
      • 2019-07-25
      • 2011-12-19
      • 2020-12-09
      相关资源
      最近更新 更多