Laravel后端API路由Postman测试返回404 Not Found问题求助
解决Laravel路由返回404 Not Found问题
1. 确认API路由前缀与请求URL匹配
Laravel的api.php路由默认自带/api前缀,所有API请求必须包含该前缀。例如:
- GET请求URL应为
http://<你的Docker主机IP>:<端口>/api/categories - POST请求URL应为
http://<你的Docker主机IP>:<端口>/api/categories
若直接请求/categories,必然返回404。
2. 验证路由是否正确注册
进入Laravel所在的Docker容器,执行命令查看已注册路由列表:
php artisan route:list
如果列表中没有Category相关路由,检查api.php是否存在语法错误,或RouteServiceProvider是否修改了API路由的前缀/命名空间。正确的路由注册示例:
use App\Http\Controllers\CategoryController; // 推荐使用API资源路由 Route::apiResource('categories', CategoryController::class); // 或手动定义单个路由 Route::get('/categories', [CategoryController::class, 'index']); Route::post('/categories', [CategoryController::class, 'store']);
3. 清除路由缓存
若之前执行过php artisan route:cache,修改路由后需清除缓存才能生效:
php artisan route:clear
需在Laravel容器内部执行该命令,或通过Docker Compose的exec命令运行。
4. 检查Web服务器重写配置
如果Laravel容器使用Nginx/Apache作为Web服务器,确保配置正确处理URL重写:
- Nginx:配置文件需包含以下规则,将所有请求转发到
public/index.php:
location / { try_files $uri $uri/ /index.php?$query_string; }
- Apache:启用
mod_rewrite模块,确保public/.htaccess文件存在且未被修改。
5. 排查数据库连接与日志
虽然Migration和Model不直接影响路由,但Controller中若因数据库连接失败抛出异常,错误处理不当可能返回404。检查.env中的数据库配置,确保指向Docker容器内的数据库服务:
DB_CONNECTION=mysql DB_HOST=mysql # 对应Docker Compose中数据库服务的名称 DB_PORT=3306 DB_DATABASE=你的数据库名 DB_USERNAME=用户名 DB_PASSWORD=密码
同时查看Laravel日志文件storage/logs/laravel.log,排查是否有隐藏的报错信息。
6. 确认Postman请求配置
- 请求方法必须与路由定义一致(GET对应
index,POST对应store) - POST请求需设置
Content-Type为application/json,并在请求体中传入符合接口要求的参数
内容的提问来源于stack exchange,提问作者Mohamed Humaam Athif
相关产品推荐
相关产品推荐

