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

2019-05-12 02:08发布

- 题 -

我刚刚开始使用的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发送。

所有我需要做的就是用一个PUT请求到下一行发送的$ DATA。 喜欢

$value = $data['curl_data'];

我看到的这个话题,它是让我头疼了这么多杂乱。 这似乎在PHP客户端那么容易的,但没有人有正在为PHP服务器端的答案。

谢谢你的帮助!

-答案(后帮助和作业) -

我是新的,所以我不能回答我的问题,直到8小时后...奇:)

好了,这里的大人们的工作后,我不得不说,我们遇到了答案。 我自责它是那么容易的,同时它是混乱。

curl_setopt($handle, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($handle, CURLOPT_POSTFIELDS, http_build_query($data));

第一个变化(或以上)我不得不添加http_build_query()$左右的数据。 这发生从一个阵列到URL字符串友好我的数据。

接下来我不得不添加。

parse_str(file_get_contents('php://input'), $put);

现在我可以做这样的事情$把[“数据”。

PaulPRO上面给出的答案确实工作,以获得同样的方式file_get_contents()函数用更少的线所做的数据。 我们卡住了试图找出如何解析那里曾是我缺乏http_build_query的()我已经在其他网站上看到踢入戏数据。

所以这是它是如何工作。

  1. 数据放入正常阵列。
  2. http_build_query()把它转换成一个漂亮的几乎得到这样的字符串。
  3. file_get_contents()函数从客户端向服务器传输它。
  4. parse_str()然后把它放回阵列。

我看到很多消息关于使用PUT发送文件。 我可以看到这是如何工作的,但是从我在这整个过程中REST阅读是PUT是更新数据后是创建数据。 也许我错了。 我缺少的东西吗?

Answer 1:

从PHP手册 :

PUT数据来自标准输入:

$putdatafp = fopen("php://input", "r");

实例:

$putfp = fopen('php://input', 'r');
$putdata = '';
while($data = fread($putfp, 1024))
    $putdata .= $data;
fclose($putfp);


Answer 2:

我有同样的情形,即,必须通过数据REST API使用PUT方法发送到PHP服务器。 我挣扎着,几乎几个小时找到了解决方案,但终于找到了办法:

在卷曲:

$postData = http_build_query($data);
curl_setopt($ch, CURLOPT_POSTFIELDS,$postData); 

我们已经将数据解析到一个变量让的说:$ putData,在这里,是解析字符串的过程:

parse_str(file_get_contents("php://input"),$putData); 

然后打印$putData ,会得到你的卷曲张贴在同一阵列..



文章来源: How do I access PHP REST API PUT data on the server side?