Laravel 5.5 - 使用POST方法时的MethodNotAllowedHttpException
问题描述:
我创建了用于从数据库中获取数据的过滤器。当我使用GET方法,它的工作原理但POST方法,我得到错误:Laravel 5.5 - 使用POST方法时的MethodNotAllowedHttpException
Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException
我花了几个小时寻找解决办法,但好像我在这里失去了一些东西。
对于测试,我试图直接在路线中得到结果,但它仍然是同样的问题。
This Works。
<?php
use App\test;
Route::get('/', function() {
$test = test::all();
return $test;
});
这不起作用。
<?php
use App\test;
Route::post('/', function() {
$test = test::all();
return $test;
});
答
这
use App\test;
Route::post('/', function() {
$test = test::all();
return $test;
});
一律为Request
一个实例,所以你不能直接访问它的浏览器,如GET
你有某种形式的数据发布到它。因此,最好将它重命名为,也许像:
use App\test;
Route::post('/test', function (Request $request) {
$test = test::all();
return $test;
});
这$request
握住你的表单数据
答
Route::get()
和Route::post()
被定义为指定的HTTP方法途径处理。
如果只定义了这条路线:
Route::post('/', function() {
$test = test::all();
return $test;
});
然后,你必须确保该URL的所有调用使用POST方法。如果您使用GET方法向该网址发送请求,则会得到MethodNotAllowedHttpException
异常,因为您只定义了POST方法处理程序。
答
看起来您可能会忘记{{csrf_field()}}。将此添加到您的表单中。
如果你发布的数据没有csrf,在laravel 5.5中你会看到这个错误。
答
请注意,如果您正在撰写发布路线,在测试时请确保您将数据发布到网页,否则会发生错误。
帖子路由不能简单地通过调用url来测试,方法应该是post。如果你使用邮递员检查路由URI,它将起作用。
尝试清除缓存'php artisan route:clear' – FuzzyTree
@FuzzyTree它没有帮助。 – User3100
你如何测试帖子?你实际上是在创建一个发布请求吗?还是以与获取相同的方式进行测试? – FuzzyTree