Laravel在路由不存在时返回MethodNotAllowedHttpException

时间:2019-03-05 19:58:01

标签: php laravel post get routing

我在laravel 5.7中创建了购买物品的路线

Route::post('/buy/item', "userController@buy_item")->name('buy_item_form');

一切正常,但是当我刷新页面(替换为GET Request)时, MethodNotAllowedHttpException 。 GET路由不存在,它必须返回404错误。 我不明白为什么它会返回这个异常。

1 个答案:

答案 0 :(得分:2)

您使用的是帖子,帖子中带有@csrf令牌。当您单击刷新时,您正在执行的是GET方法而不是帖子,因此您将获得该方法不允许例外。如果您不发送数据,则可以将其更改为get [Route :: get]方法。

如果您想接受两种方法[post,get]以获得更好的体验并管理可能的错误。您可以接受路线上的2种方法,例如:

Route::match(array('GET','POST'),'/buy/item', 'userController@buy_item')->name('buy_item_form');

然后在控制器上,根据该方法定义要执行的操作。

if (Request::isMethod('get')){
    // redirect user
}

if (Request::isMethod('post')){
    // do logic for post method
}