PHP 处理接口 body 的逻辑

开发环境: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 不久,如果写得不好,欢迎大家指正!😆

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容