PHP 处理接口 body 的逻辑
2020-01-02 本文已影响0人
93b3d3ccb7e6
开发环境:PHP 7.1.23 + Apache 2.4.34
在开发项目的过程中,前端传递参数时可使用多种格式:form-data
、x-www-form-urlencoded
、raw (json)
,而后台为了考虑全面,需要对这三种格式的参数分别进行处理,大概逻辑如图:
PHP 代码如下:
/**
* 获取请求体中的数据
* @return mixed
* @throws Exception
*/
private function _getBody(){
$data = file_get_contents("php://input");
$data1 = $_POST;
if (empty($data)){
if (empty($data1)) {
throw new Exception("请求参数不能为空", 400);
} else {
return $data1;
}
} else {
//判断字符串是否包含 {
$bool = strstr($data, "{");
if (!$bool) {//x-www-form-urlencoded
var_dump($data1);
return $data1;
} else {//raw (json)
var_dump("data: ".$data);
$json_data = json_decode($data, true);
return $json_data;
}
}
}
主要是图一标红旗的地方需要注意,而最终 return 的都是关联数组,接口测试如图:
图二如果使用 $_POST
获取不到数据,可能是 php.ini
配置的问题,按照下图修改并重启服务器试试:
刚学 PHP 不久,如果写得不好,欢迎大家指正!😆