我開始學習如何正確使用REST API的下一個流行的教程here
當試圖創建一個簡單的POST的API我一直運行到一個400錯誤,截至目前,我還沒有找到任何答案。
API如下:
$app->post('/test', function() use ($app) {
// check for required params
verifyRequiredParams(array('email'));
echo "Success";
});
其試圖用的代碼塊,從教程不變來驗證「電子郵件」參數:
function verifyRequiredParams($required_fields) {
$error = false;
$error_fields = "";
$request_params = array();
$request_params = $_REQUEST;
// Handling PUT request params
if ($_SERVER['REQUEST_METHOD'] == 'PUT') {
$app = \Slim\Slim::getInstance();
parse_str($app->request()->getBody(), $request_params);
}
foreach ($required_fields as $field) {
if (!isset($request_params[$field]) || strlen(trim($request_params[$field])) <= 0) {
$error = true;
$error_fields .= $field . ', ';
}
}
if ($error) {
// Required field(s) are missing or empty
// echo error json and stop the app
$response = array();
$app = \Slim\Slim::getInstance();
$response["error"] = true;
$response["message"] = 'Required field(s) ' . substr($error_fields, 0, -2) . ' is missing or empty';
echoRespnse(400, $response);
$app->stop();
}
}
代碼總是失敗,400錯誤代碼,因爲它似乎$ _REQUEST函數正在返回一個空數組。任何想法可能會出錯?我正在開發一個運行apache的ubuntu服務器。
Slim API框架設置正確,因爲我可以通過Google的Advanced Rest Client調用一個非常簡單的調用,它可以正確迴應響應。我肯定會將正確的參數傳遞給api。
更新:我也試着從API直接運行$ _REQUEST和$ _GET功能,它只是返回一個空字符串是這樣的:如果有某種Apache的配置文件的
Array
(
)
我不知道這阻止了這些功能的數據或東西?