gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 02:57:56 27 4
gpt4 key购买 nike

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

我很难全神贯注地使用 cURL 将 JSON 发布到我使用 Dreamfactory 设置的 API。这不是 POSTing 部分,而是 Dreamfactory 如何要求在您调用电话之前使用该服务启动 session 。我正在寻求有关如何先创建 session 然后发出 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,然后您可以将其作为 header 包含在内以对 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 创建了一个 session :

<?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 的一体化功能可以一次性创建 session 和 POST?

最佳答案

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

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

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

关于php - 使用 JSON 和 cURL 通过 PHP 发布到 Dreamfactory API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28387322/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com