PHP - 获取通过body传递的POST数据(接收Body中的JSON内容)
我们知道可以通过 $_POST['paramName'] 获取通过表单(multipart/form-data)提交的数据。但有时客户端会直接将请求数据以字符串的形式都放到 body 里传递过来,那么服务端就需要使用 php://input 方式来接收数据。
(3)客户端这边接收到的返回结果如下:
1,php://input 介绍
(1)php://input 是个可以访问请求的原始数据的只读流。
(2)php://input 与 $_POST 的使用场景比较:
- 只有 Coentent-Type 为 application/x-www-data-urlencoded 和 multipart/form-data 情况下,PHP 才会将 http 请求数据包中相应的数据填入全局变量 $_POST。
- 只有 Coentent-Type 为 multipart/form-data 的时候,PHP 不会将 http 请求数据包中的相应数据填入 php: //input,否则其它情况都会。
2,使用样例
(1)这里我使用 Postman 工具来发送请求,具体内容见下方图片,该工具的使用方法见我之前写的文章(点击查看)
(2)服务端代码如下:
<? //通过输入端来获取数据 $body = file_get_contents('php://input'); echo "--- 获取到的原始数据--- \r\n".$body; echo " \r\n \r\n"; //解析数据 $json = json_decode($body ); echo "--- 解析数据--- \r\n"; echo "name:".$json->{'name'}."\r\n"; echo "age:".$json->{'age'}."\r\n"; ?>
(3)客户端这边接收到的返回结果如下: