gpt4 book ai didi

php - Curl 和 PHP - 如何通过 curl 通过 PUT、POST、GET 传递 json

转载 作者:IT王子 更新时间:2023-10-28 23:55:31 25 4
gpt4 key购买 nike

我一直致力于为它构建一个 Rest API,并且我一直在使用命令行中的 curl 进行测试,这对于 CRUD 来说非常容易

我可以从命令行成功地进行这些调用

curl -u username:pass -X GET http://api.mysite.com/pet/1
curl -d '{"dog":"tall"}' -u username:pass -X GET http://api.mysite.com/pet
curl -d '{"dog":"short"}' -u username:pass -X POST http://api.mysite.com/pet
curl -d '{"dog":"tall"}' -u username:pass -X PUT http://api.mysite.com/pet/1

上述调用很容易从命令行进行,并且可以在我的 api 上正常工作,但现在我想使用 PHP 来创建 curl。如您所见,我将数据作为 json 字符串传递。我已经阅读过,我想我可能可以执行 POST 并包含 POST 字段,但我无法找出如何使用 GET 传递 http 正文数据。我看到的所有内容都说您必须将其附加到 url,但在命令行表单上看起来并不是这样。无论如何,如果有人可以在一页上用 PHP 编写执行这四个操作的正确方法,我会很高兴。我想看看用 curl 和 php 做的最简单的方法。我认为我需要通过 http 正文传递所有内容,因为我的 php api 使用 php://input

捕获所有内容

最佳答案

放置

$data = array('username'=>'dog','password'=>'tall');
$data_json = json_encode($data);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Content-Length: ' . strlen($data_json)));
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_POSTFIELDS,$data_json);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

发布

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$data_json);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

获取 查看@Dan H 的回答

删除

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($ch, CURLOPT_POSTFIELDS,$data_json);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

关于php - Curl 和 PHP - 如何通过 curl 通过 PUT、POST、GET 传递 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21271140/

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