我在laravel 5.7中创建了购买物品的路线
Route::post('/buy/item', "userController@buy_item")->name('buy_item_form');
一切正常,但是当我刷新页面(替换为GET Request)时, MethodNotAllowedHttpException 。 GET路由不存在,它必须返回404错误。 我不明白为什么它会返回这个异常。
答案 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
}