- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
-- 问题 --
我刚刚开始使用 REST API,并且感到非常困惑。
这就是我的 PHP cRUL 客户端 PUT 的样子。
case 'PUT':
curl_setopt($handle, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($handle, CURLOPT_POSTFIELDS, $data);
break;
现在,当我查看服务器时,我的 $_SERVER['REQUEST_METHOD'] 显示 PUT,但我的问题是如何获取使用 CURLOPT_POSTFIELDS 发送的 $data。
我需要做的就是将通过 PUT 请求发送的 $data 发送到下一行。喜欢
$value = $data['curl_data'];
我在这个主题上看到了太多的困惑,这让我头疼。在 php 客户端上看起来很容易,但没有人给出适用于 php 服务器端的答案。
感谢您的帮助!
-- 回答(在帮助和作业之后)--
我是新人,所以直到 8 小时后我才能回答自己的问题...奇怪:)
好吧,在与这里的伟大人士合作之后,我不得不说我们找到了答案。我责备自己,因为它是如此简单,同时又令人困惑。
curl_setopt($handle, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($handle, CURLOPT_POSTFIELDS, http_build_query($data));
第一个更改(上面)我必须在 $data 周围添加 http_build_query() 。这将我的数据从数组转换为 url 友好的字符串。
接下来我必须添加。
parse_str(file_get_contents('php://input'), $put);
现在我可以做类似 $put['data'] 的事情。
PaulPRO 上面给出的答案确实可以像 file_get_contents() 那样用更少的行来获取数据。我们陷入了试图弄清楚如何解析数据的困境,这就是我在另一个网站上看到的缺少 http_build_query() 的地方。
这就是一切的运作方式。
我看到很多有关使用 PUT 发送文件的消息。我可以看到这是如何工作的,但从我在整个 REST 过程中读到的内容来看,PUT 是更新数据,就像 post 是创建数据一样。也许我错了。我错过了什么吗?
最佳答案
来自PHP Manual :
PUT 数据来自标准输入:
$putdatafp = fopen("php://input", "r");
使用示例:
$putfp = fopen('php://input', 'r');
$putdata = '';
while($data = fread($putfp, 1024))
$putdata .= $data;
fclose($putfp);
关于php - 如何在服务器端访问 PHP REST API PUT 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46063358/
我是一名优秀的程序员,十分优秀!