PHP 處理接口 body 的邏輯

開發(fā)環(huán)境:PHP 7.1.23 + Apache 2.4.34

在開發(fā)項目的過程中,前端傳遞參數(shù)時可使用多種格式:form-data、x-www-form-urlencoded、raw (json),而后臺為了考慮全面,需要對這三種格式的參數(shù)分別進行處理,大概邏輯如圖:

圖一

PHP 代碼如下:

/**
     * 獲取請求體中的數(shù)據(jù)
     * @return mixed
     * @throws Exception  
     */
    private function _getBody(){
        
        $data = file_get_contents("php://input");          
        $data1 = $_POST;  

        if (empty($data)){ 

            if (empty($data1)) {
                throw new Exception("請求參數(shù)不能為空", 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;
            }            
        }
    }

主要是圖一標(biāo)紅旗的地方需要注意,而最終 return 的都是關(guān)聯(lián)數(shù)組,接口測試如圖:

圖二

如果使用 $_POST 獲取不到數(shù)據(jù),可能是 php.ini 配置的問題,按照下圖修改并重啟服務(wù)器試試:

圖三

剛學(xué) PHP 不久,如果寫得不好,歡迎大家指正!??

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容