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

Laravel 5.3 api routes are redirecting even when all middleware is commented out

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

我在 routes/api.php 中定义了一个资源,如下所示:

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

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

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

现在,请不要误会我的意思,我 想要 我的 api 上的 auth:api 中间件,尤其是 POST 或 PUT请求,但我不知道是什么导致它在没有任何中间件时重定向 运行ning(据我所知)。

我已经阅读了所有我能找到的关于中间件的文档。我想知道是否有除中间件以外的其他原因导致这种情况?这是一个相当新鲜的应用程序,所以我与基本安装相比没有太大变化。

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

use Illuminate\Support\Facades\Response;

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

要修复此重定向,只需在从其余客户端调用 laravel api 路由时将 header 参数 "Accept" 设置为 "application/json",它就会起作用很好。