Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SLIM PHP api 400错误-$\请求不工作_Php_Apache_Rest_Slim - Fatal编程技术网

SLIM PHP api 400错误-$\请求不工作

SLIM PHP api 400错误-$\请求不工作,php,apache,rest,slim,Php,Apache,Rest,Slim,下面是一个流行的教程,我开始学习如何正确使用RESTAPI 当我试图创建一个简单的PostAPI时,我一直遇到一个400错误,到目前为止,我还没有在网上找到任何答案 空气污染指数如下: $app->post('/test', function() use ($app) { // check for required params verifyRequiredParams(array('email')); echo "S

下面是一个流行的教程,我开始学习如何正确使用RESTAPI

当我试图创建一个简单的PostAPI时,我一直遇到一个400错误,到目前为止,我还没有在网上找到任何答案

空气污染指数如下:

$app->post('/test', function() use ($app) {
//             check for required params
            verifyRequiredParams(array('email'));
            echo "Success";
});
它尝试使用此代码块验证“email”参数,与教程中的相同:

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();
    }
}
我想知道是否有某种apache配置文件阻止了这些函数的数据或其他内容?

可能的问题: 您是否仔细检查了请求标题中所选的内容类型是否正确? 我怀疑客户机正在感知从服务器端发送的格式错误的标记语言

可能的解决办法:
将内容类型:application/x-www-form-urlencoded更改为application/JSON,反之亦然。

以便教程接收 $name=$app->request->post('name')

POST参数必须在有效负载数据中 姓名=您的姓名和密码=传递和发送电子邮件=me@mail.com 应用程序/x-www-form-urlencoded

如果在URL之后而不是在有效负载数据中提供参数,则这是GET请求的参数。在这种情况下,教程部分起作用(它看到了用于验证所需参数是否存在的参数),但它在“任何地方”查找参数,而它应该只查找POST的有效负载参数

Array
(
)