Curl 和 PHP - 如何通过 PUT、POST、GET 通过 curl 传递 json [英] Curl and PHP - how can I pass a json through curl by PUT,POST,GET

查看:49
本文介绍了Curl 和 PHP - 如何通过 PUT、POST、GET 通过 curl 传递 json的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have been working on building an Rest API for the hell of it and I have been testing it out as I go along by using curl from the command line which is very easy for CRUD

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

I can successfully make these call from the command line

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

The above calls are easy to make from the command line and work fine with my api, but now I want to use PHP to create the curl. As you can see, I pass data as a json string. I have read around and I think I can probably do the POST and include the POST fields, but I have not been able to find out how to pass http body data with GET. Everything I see says you must attached it to the url, but it doesn't look that way on the command line form. Any way, I would love it if someone could write the correct way to do these four operations in PHP here on one page. I would like to see the simplest way to do it with curl and php. I think I need to pass everything through the http body because my php api catching everything with php://input

推荐答案

PUT

$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);

这篇关于Curl 和 PHP - 如何通过 PUT、POST、GET 通过 curl 传递 json的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆