即使所有中间件都被注释掉,Laravel 5.3 api路由也会重定向

时间:2017-01-24 00:07:49

标签: laravel rest laravel-5 url-redirection postman

我正在使用新的Laravel 5.3应用程序编写RESTful API。

我有routes/api.php中定义的资源,如此:

Route::resource('/simple-path', 'Api\ControllerName');

路由本身没有添加中间件,也没有在该控制器的构造函数中添加任何中间件,也没有在任何父控制器/类中添加任何中间件。

但是,对于/之外的任何HTTP动词,Laravel(?)保持302重定向到GET,我正在驾驶自己疯狂试图找出原因。即使我在app/Http/Kernel.php中注释掉所有中间件,只要我在curl或PostMan中对/simple-path进行简单的POST调用,它仍会重定向。

现在,不要误解我的意思,我想要我的api上的auth:api中间件,特别是对于POST或PUT请求,但我无法弄清楚导致它的原因在没有任何中间件运行的时候重定向(据我所知)。

我已经阅读了所有可以找到的中间件文档。我想知道除了中间件之外还有什么可能导致这种情况吗?这是一个相当新鲜的应用程序,所以我没有从基本安装中做太多改变。

2 个答案:

答案 0 :(得分:1)

要修复此重定向,只需在从其他客户端调用laravel api路由时将头参数“Accept”设置为“application / json”,它就能正常工作。

答案 1 :(得分:0)

在这里回答我自己的问题。重定向不是由于中间件,而是由于FormRequest。我是在我的控制器类的FormRequest函数中提示我创建的store()子类的类型,这导致它首先运行rules()进行验证。当它看到缺少必填字段时,FormRequest类通过自己的response()方法重定向。所以我只是将它添加到我的FormRequest子类(现在):

use Illuminate\Support\Facades\Response;

public function response(array $errors)
{
    return Response::json($errors, 400);
}