gpt4 book ai didi

php - 如何在服务器端访问 PHP REST API PUT 数据?

转载 作者:行者123 更新时间:2023-11-29 18:27:17 25 4
gpt4 key购买 nike

-- 问题 --

我刚刚开始使用 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() 的地方。

这就是一切的运作方式。

  1. 数据被放入普通数组中。
  2. http_build_query() 将其转换为一个漂亮的几乎像 GET 一样的字符串。
  3. file_get_contents() 将其从客户端传输到服务器。
  4. parse_str() 然后将其转回数组。

我看到很多有关使用 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/

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