当方法是POST,PUT,DELETE时,Slim Framework错误405

时间:2015-11-20 00:29:16

标签: php post slim

我正在使用slimframework版本3.0 RC2开发SLIM API。

我已经按照建议配置了.htaccess,并且也定义了端点。通过GET方法获取时,我得到了正确的200响应,并且正确部署了所请求的数据。

但是,当使用任何POST,PUT或DELETE方法时,只需获取 405 错误消息,该消息指出:

  

如果您的Slim Framework应用程序的路由与之匹配   当前的HTTP请求URI但不是HTTP请求方法,   应用程序调用其Not Allowed处理程序并返回HTTP / 1.1 405   不允许响应HTTP客户端。

这是我正在测试的POST端点:

$app->post('/add', function () {                                                                                  
  echo "post ok";                                                                               
});   

正如我前面提到的,当使用GET时,即使使用参数也可以正常工作。

我的服务器是linux debian jessie,PHP版本5.6.15。实际上我正在浏览器上测试URI并使用Postman。任何POST,PUT DELETE都会给我405错误。

2 个答案:

答案 0 :(得分:0)

您需要专门使用post方法,或根据您的需要进行删除或删除。这是来自文档。

$app = new \Slim\App();
$app->post('/books', function ($request, $response, $args) {
    // Create new book
});

您无法使用$ app->获取帖子请求。

编辑:

仔细检查你的htaccess文件并确保它得到:

RewriteEngine On

# Some hosts may require you to use the `RewriteBase` directive.
# If you need to use the `RewriteBase` directive, it should be the
# absolute physical path to the directory that contains this htaccess file.
#
# RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]

答案 1 :(得分:0)

我找到了方法。而不是像这样使用帖子:

$app->post('/add', function () {                                          
    echo "post ok";
}); 

使用Js 地图

$app->map(['GET', 'POST']'/add', function () {                                          
    echo "post ok";
}); 

将POST方法替换为任何其他PUT,DELETE,PATCH .....我已经使用DataBase进行了测试,并按预期正常工作。

另请注意,您可能或应该要求函数参数:

function($request, $response, $args)