Laravel API在Postman发送POST请求返回404 GET请求正常如何解决
Laravel POST接口返回404问题排查与解决
核心原因梳理
- 路由路径匹配错误:
/store路由被/item前缀包裹,完整请求路径为/item/store,Postman路径填写错误直接触发404 - 路由语法错误:你提供的路由代码中
prefix方法的闭包缺少闭合花括号},导致后续路由未被正确注册 - 路由缓存未更新:修改路由后未清理Laravel路由缓存,旧的路由规则未覆盖
- 路由文件位置错误:如果路由写在
api.php中,所有请求路径需要额外加/api前缀;如果写在web.php中,Laravel默认要求携带CSRF令牌,Postman请求不带令牌会返回404/419状态码 - 配置错误:Postman中请求方法选错、HTTP协议与站点配置不匹配(如误填https但站点未配置SSL)也会触发404
解决步骤
- 修正路由配置,补全语法错误,同时优化不合理的删除路由配置:
use App\Http\Controllers\ItemController; // 确保控制器命名空间已导入 Route::get('/items', [ItemController::class, 'index']); Route::prefix('/item', function () { Route::post('/store', [ItemController::class, 'store']); Route::put('/{id}', [ItemController::class, 'update']); Route::delete('/{id}', [ItemController::class, 'destroy']); // 原删除路由路径为/store不符合REST规范,改为接收id参数 });
- 执行
php artisan route:list命令查看已注册路由列表,确认POST /item/store路由存在且指向控制器方法正确。 - 清理路由缓存:
- 开发环境执行
php artisan route:clear清除旧缓存 - 生产环境执行
php artisan route:cache重新生成缓存
- 开发环境执行
- 校验Postman请求配置:
- 请求方法选择
POST - 请求路径填写完整:如果路由在
web.php中地址为http://你的域名/item/store,如果在api.php中地址为http://你的域名/api/item/store - 如果路由写在
web.php中,在app/Http/Middleware/VerifyCsrfToken.php文件中新增排除规则,跳过CSRF校验:
protected $except = [ '/item/store' ]; - 请求方法选择
- 额外校验:
store方法中request()->item["name"]需要请求体携带结构为{"item": {"name": "xxx"}}的JSON参数,否则路由匹配成功后会返回500错误,可提前调整参数传递逻辑。
内容的提问来源于stack exchange,提问作者UcefDev
相关产品推荐
相关产品推荐

