Laravel 5-web和API路由冲突

Laravel 5-web和API路由冲突,api,laravel-5,Api,Laravel 5,在我在Laravel的一个网站上,当我调用登录API时,我遇到了错误419。以下是我的搜索web路线: Route::get('/{address_1}/{address_2?}/{address_3?}/{address_4?}'); Route::post('/{address_1}/{address_2?}/{address_3?}/{address_4?}'); 及以下API路线: Route::post('login', 'Auth\PassportController@login'

在我在Laravel的一个网站上,当我调用登录API时,我遇到了错误419。以下是我的搜索web路线:

Route::get('/{address_1}/{address_2?}/{address_3?}/{address_4?}');
Route::post('/{address_1}/{address_2?}/{address_3?}/{address_4?}');
及以下API路线:

Route::post('login', 'Auth\PassportController@login');
Route::post('register', 'Auth\PassportController@register');

在Laravel中,419HTTP错误代码通常表示缺少CSRF令牌

如果“API”路由:

Route::post('login', 'Auth\PassportController@login'); 
Route::post('register', 'Auth\PassportController@register');
web.php
文件中,则这可能是因为
RouteServiceProvider
将路由封装在
web.php
文件中的
web
中间件中,该中间件启用了CSRF中间件

如果是这种情况,您需要在POST请求中包含CSRF令牌,将这些路由移动到
api.php
routes文件,或者将
寄存器
端点添加到
VerifyCsrf
中间件的
$excludes
数组中

更新 事实上,你的搜索路线会引起很多悲伤。 考虑到它们可以将任何URL与一到四个段匹配,您的API路由正在被这些段吞没。 您需要做的是更改RouteServiceProvider,使其最后注册web路由,然后将搜索路由放在最后。
这样,您的预定义路由将在“捕获所有”搜索路由之前注册

你好@james我已经把这个路由放到了route::post('login','Auth')\PassportController@login'); 路由::post('register','Auth\PassportController@register'); 在api.php中感谢您的帮助@james我离我的问题非常近,您能指导我如何在catch all中定义我的搜索路线吗thanksIt基本上已经是一个包罗万象的网站,至少对于一个有4个段的url来说是这样。如果你想让它做其他事情,那么你需要发布另一个问题,这是针对你的问题。就这个问题而言,我相信上面的答案应该能解决你的问题。