開發(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 不久,如果寫得不好,歡迎大家指正!??