我正在使用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错误。
答案 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)