ThinkPHP 接收 Post Json 参数
Postman 测试 API 某 Post 接口
发送请求提示参数验证失败
调试的过程中某次采用通过 Body 表传递参数的方法,API 神奇地通了
TP5通过 strpos 函数在 Header 的 content-type 值中查找 app/json 字符串
必须设置 Header 的 content-type 值为 app/json 才行
否则 TP5 不会认为 传入 Json 参数 并给 Request::post 设值为空
两个知识点
content-type 为 "application/json" 的数据 php 不能直接识别的
导致 $_POST 数组为空
解决办法
用 $GLOBALS['HTTP_RAW_POST_DATA'] 把原始数据取出来
然后再 json_decode 就行了
此方法,需要设置 php.ini 中的always_populate_raw_post_data 值为 On
$HTTP_RAW_POST_DATA 包含了 POST 的原始数据
但这不是一个超全局变量,要在函数中使用它 必须声明为 global
或使用 $GLOBALS['HTTP_RAW_POST_DATA'] 代替
通过 file_get_contents('php://input') 代替上面的方法直接获取到传入的 Json 参数
感谢您的支持,我会继续努力的!
支付宝扫一扫,即可进行扫码打赏哦
2607ThinkPHP5基础
ThinkPHP 接收 Post Json 参数
Postman 测试 API 某 Post 接口
发送请求提示参数验证失败
调试的过程中某次采用通过 Body 表传递参数的方法,API 神奇地通了
TP5通过 strpos 函数在 Header 的 content-type 值中查找 app/json 字符串
必须设置 Header 的 content-type 值为 app/json 才行
否则 TP5 不会认为 传入 Json 参数 并给 Request::post 设值为空
两个知识点
content-type 为 "application/json" 的数据 php 不能直接识别的
导致 $_POST 数组为空
解决办法
用 $GLOBALS['HTTP_RAW_POST_DATA'] 把原始数据取出来
然后再 json_decode 就行了
此方法,需要设置 php.ini 中的always_populate_raw_post_data 值为 On
$HTTP_RAW_POST_DATA 包含了 POST 的原始数据
但这不是一个超全局变量,要在函数中使用它 必须声明为 global
或使用 $GLOBALS['HTTP_RAW_POST_DATA'] 代替
通过 file_get_contents('php://input') 代替上面的方法直接获取到传入的 Json 参数