今天在使用postman测试接口的时候,遇到个问题,使用raw
向接口发送json
数据,但是后台获取不到数据
后台使用$_POST
获取,获取不到数据。
之前一直使用$_POST
,差点以为这万能了,后面查看了文档发现还是有差异的。
$_POST
当 HTTP POST 请求的 Content-Type 是 application/x-www-form-urlencoded 或 multipart/form-data 时,会将变量以关联数组形式传入当前脚本。
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)