今天在使用postman测试接口的时候,遇到个问题,使用raw向接口发送json数据,但是后台获取不到数据

后台使用$_POST获取,获取不到数据。

之前一直使用$_POST,差点以为这万能了,后面查看了文档发现还是有差异的。

$_POST

当 HTTP POST 请求的 Content-Type 是 application/x-www-form-urlencoded 或 multipart/form-data 时,会将变量以关联数组形式传入当前脚本。

php://

php://

php://input 是个可以访问请求的原始数据的只读流。 POST 请求的情况下,最好使用 php://input 来代替 $HTTP_RAW_POST_DATA,因为它不依赖于特定的 php.ini 指令。 而且,这样的情况下 $HTTP_RAW_POST_DATA 默认没有填充, 比激活 always_populate_raw_post_data 潜在需要更少的内存。 enctype="multipart/form-data" 的时候 php://input 是无效的。

获取raw数据方法

$data = json_encode(file_get_contents('php://input'),true)