如何在Laravel 8.0中设置API路由?访问api/register返回404如何解决
Laravel 8.x API注册接口404问题排查方案
- 核对路由前缀与请求方式
你在api.php中将注册路由放在了prefix => v1的路由组下,且注册路由声明为POST类型,因此:- 正确的访问地址应为
http://127.0.0.1:8000/api/v1/register,而非你当前使用的/api/register - Postman必须选择POST请求方式,浏览器直接访问默认是GET请求,必然返回404
- 正确的访问地址应为
- 检查Laravel 8路由命名空间配置
Laravel 8默认取消了路由服务提供者的默认命名空间前缀,如果你没有手动修改RouteServiceProvider的$namespace属性,直接写UsersController@register会无法找到控制器,两种修复方案:- 引入控制器类后使用数组写法:
use App\Http\Controllers\UsersController; Route::group(['prefix' => 'v1'], function () { Route::post('/login', [UsersController::class, 'login']); Route::post('/register', [UsersController::class, 'register']); Route::get('/logout', [UsersController::class, 'logout'])->middleware('auth:api'); });- 手动补全控制器全命名空间:
Route::post('/register', 'App\Http\Controllers\UsersController@register');
- 清除路由缓存
执行以下命令清除已缓存的路由配置,再进行测试:
也可以执行php artisan route:clearphp artisan route:list查看已加载的路由列表,确认是否存在你声明的注册路由条目 - 确认服务运行状态
检查php artisan serve启动的服务端口是否为8000,无特殊配置的情况下不要直接访问public目录下的入口文件,避免路由重写规则失效。
内容的提问来源于stack exchange,提问作者Olana Kenea
相关产品推荐
相关产品推荐

