首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用JSON和cURL通过PHP发布到Dreamfactory API

使用JSON和cURL通过PHP发布到Dreamfactory API
EN

Stack Overflow用户
提问于 2015-02-08 05:00:21
回答 1查看 2.3K关注 0票数 2

如果你不熟悉,请查看dreamfactory.com -一个非常整洁的开源应用程序接口平台,可以连接到任何数据库,可以是mysql,nosql等等。

我很难理解如何使用cURL将JSON发布到我使用Dreamfactory设置的应用程序接口。这不是POSTing部分的问题,而是梦工厂在调用之前需要启动与服务的会话的方式。我正在寻求关于如何首先创建会话然后发出POST请求的最佳实践的建议。

以下是有关如何连接到Dreamfactory服务并进行调用的一些基本信息:

要登录,只需发送到/rest/user/session -非常简单

代码语言:javascript
复制
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发布到演示服务

代码语言:javascript
复制
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创建了一个会话:

代码语言:javascript
复制
<?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并对其进行新调用的最佳方式是什么?下一步是什么?我是否让curl连接保持打开状态,然后创建一个要POST的函数?有没有一个带有cURL的一体化功能,可以在一个镜头中创建会话和帖子?

EN

回答 1

Stack Overflow用户

发布于 2015-02-09 11:05:55

可以,您可以继续您已有的内容,并在下一次调用时将会话添加为X-DreamFactory- session -Token。如果您要从该脚本进行多个调用,这将非常有效。

如果您只想进行一次(或几次)调用,您还可以利用1.9版中添加的Basic HTTP Authentication支持。

-u选项应该有效(-u myusername:mypassword),或者通过传递上面链接中提到的Authorization头(不要忘记'Basic‘)。base64_encode($username .':‘。$password)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28387322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档