Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
即使所有中间件都被注释掉,Laravel5.3API路由也会重定向_Laravel_Rest_Laravel 5_Url Redirection_Postman - Fatal编程技术网

即使所有中间件都被注释掉,Laravel5.3API路由也会重定向

即使所有中间件都被注释掉,Laravel5.3API路由也会重定向,laravel,rest,laravel-5,url-redirection,postman,Laravel,Rest,Laravel 5,Url Redirection,Postman,我正在用一个新的Laravel 5.3应用程序编写一个RESTful API 我在routes/api.php中定义了一个资源,如下所示: Route::resource('/simple-path', 'Api\ControllerName'); 没有在路由本身上添加任何中间件,也没有在该控制器的构造函数中添加任何中间件,也没有在任何父控制器/类中添加任何中间件 然而,Laravel(?)不断地将302重定向到/,而不是GET,我想弄清楚为什么。即使我注释掉了app/Http/Kernel.

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

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

Route::resource('/simple-path', 'Api\ControllerName');
没有在路由本身上添加任何中间件,也没有在该控制器的构造函数中添加任何中间件,也没有在任何父控制器/类中添加任何中间件

然而,Laravel(?)不断地将302重定向到
/
,而不是
GET
,我想弄清楚为什么。即使我注释掉了
app/Http/Kernel.php
中的所有中间件,只要我在curl或PostMan中运行一个对
/simple path
的简单POST调用,它仍然会重定向

现在,请不要误解我的意思,我希望在我的api上安装
auth:api
中间件,特别是对于POST或PUT请求,但我无法找出当没有任何中间件运行时(据我所知),是什么导致它重定向


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

在这里回答我自己的问题。重定向不是由于中间件,而是由于
FormRequest
。我在控制器类的
store()
函数中创建了
FormRequest
子类,这导致它首先运行
rules()
进行验证。当它看到一个必填字段丢失时,
FormRequest
类通过自己的
response()
方法重定向。因此,我只是将其添加到我的
FormRequest
子类中(目前):


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

您是否扩展了一个使用控制器级中间件的控制器?(因此在控制器方法中)如果您放入routes/api.php
Route::post('/test',function(){return response([“message”=>“test”]],200);})
并尝试发布到
http://yourpath.com/api/test
你有什么收获吗?因为您应该得到正确的响应。如果您删除了中间件,那么它将完美地工作,不会出现任何错误?只需执行“php artisan route:list”并检查post和put方法使用的控制器?@AfikDeri您的测试成功,这让我意识到我的控制器动作是类型暗示一个FormRequest子类,我之前很快建立了这个子类,它似乎正在触发它。我在其中一个参数上有一个“必需”的验证规则,当我删除所有“必需”的验证规则时,请求不再重定向!兄弟,我对同样的重新定向有些怀疑。你能加入我的聊天室吗?chat.stackoverflow.com/rooms/135960/laravelin 100年来,我从未想过会发生这样的事情,这挽救了我的一天;-)
use Illuminate\Support\Facades\Response;

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