2015-11-20 64 views
0

我正在使用SLIM API,使用slimframework版本3.0 RC2。当方法是POST,PUT,DELETE时Slim Framework错误405

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

但是使用任何POST的时候,PUT或DELETE方法,只是得到一个错误信息,其中指出:

如果你的苗条Framework应用程序具有的 当前HTTP请求的URI相匹配的路径但不是HTTP请求方法, 应用程序调用它的“不允许”处理程序,并向HTTP客户端返回不允许的响应HTTP/1.1 405 。

这是POST端点我测试:

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

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

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

+0

你是如何创建请求到'/ add'终点?你可以添加你的头文件吗? –

回答

0

我找到了办法。

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

用JS 地图:除了使用后像这样的

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

更换POST方法用于其他任何PUT,DELETE,PATCH .....我已经与测试数据库并按预期正常工作。

也请记住,你可能会或应要求函数参数:

function($request, $response, $args) 
0

您需要特别使用post方法,或根据需要放置或删除。这是来自文档。

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

你不能使用$ app->获得一个post请求。

编辑:

仔细检查您的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] 
+0

这是一个错字,实际上当使用post时,我得到了405错误,使用get时,只有200. – datelligence

+0

@datelligent您是否100%确定您发布到正确的位置? –

+0

是的,即使在上面的例子中,我改变了,而不是后期,我得到200和正确的回声。但是,当我更改为发布,获取405错误。 – datelligence

相关问题