Laravel 10x表单请求始终返回成功消息问题排查
这不是Laravel的固有问题,问题出在你的路由配置或请求环节,以下是具体排查点和解决方法:
检查路由定义顺序与匹配规则
如果你在api.php中定义的默认GET路由(比如Route::get('/', ...))使用了通配符(如{any?}),且该路由定义在POST的signup路由之前,同时你的POST请求URL和默认路由的URL一致(比如请求的是/api/而非/api/signup),就会出现这种情况。另外如果默认路由使用了Route::any或Route::match(['get','post'], ...),会直接匹配POST请求,跳过你的signup路由验证逻辑。确认路由绑定正确性
检查api.php中POST路由的定义是否正确,确保路由指向了对应的控制器方法:// 正确的路由定义示例 Route::post('/signup', [YourController::class, 'signup']);同时确认在Postman中请求的URL是
/api/signup(而非根路径/api/),HTTP方法确实是POST。清除路由缓存
如果之前运行过php artisan route:cache生成了路由缓存,后续新增的路由不会被加载,导致请求匹配到旧的路由规则。执行以下命令清除缓存:php artisan route:clear检查Form Request的验证规则
确认SignupRequest的rules()方法返回了正确的验证规则数组,比如:public function rules() { return [ 'email' => 'required|email', 'password' => 'required|min:6', // 其他必填字段规则 ]; }如果
rules()返回空数组,验证会直接通过,不会返回缺失字段的错误。排查重定向原因
API路由默认不会对POST请求进行重定向,但如果你的请求URL结尾带有斜杠(比如/api/signup/),而路由定义是/api/signup,Laravel可能会重定向到不带斜杠的路径,此时如果重定向后的路径匹配到了默认GET路由,就会出现这种情况。确保Postman中的请求URL没有多余的斜杠。
内容的提问来源于stack exchange,提问作者Sudo Sur

