PHP 处理接口 body 的逻辑

2020-01-02  本文已影响0人  93b3d3ccb7e6

开发环境:PHP 7.1.23 + Apache 2.4.34

在开发项目的过程中,前端传递参数时可使用多种格式:form-datax-www-form-urlencodedraw (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 不久,如果写得不好,欢迎大家指正!😆

上一篇 下一篇

猜你喜欢

热点阅读