Vue调用axios.patch出现PATCH 405 (Method Not Allowed)错误求助
解决Laravel中PATCH请求405 Method Not Allowed的问题
嘿,这个405错误的原因很明确——你的路由定义和前端发起的HTTP请求方法不匹配!咱们一步步来修复:
问题根源
你在web.php里把路由定义成了POST方法:
Route::post('/slideUpdate/{id}','SlideController@postSlideUpdate');
但前端Vue的update方法里用的是PATCH请求:
axios.patch(`/admin/slideUpdate/${this.list.id}`,this.$data.list)
Laravel会严格校验HTTP请求方法,方法不匹配就会抛出405错误。
解决方案(二选一即可)
方案1:修改路由为PATCH方法(推荐,符合RESTful规范)
既然是更新操作,用PATCH更贴合语义,直接把路由的post改成patch:
Route::patch('/slideUpdate/{id}','SlideController@postSlideUpdate');
如果想让控制器方法名更语义化,也可以改成updateSlide,不过不改也不影响功能。
方案2:修改前端请求为POST方法
如果不想调整路由,就把前端的axios请求从patch改成post:
axios.post(`/admin/slideUpdate/${this.list.id}`,this.$data.list)
额外小优化
你的控制器代码里有个细节可以改进:路由已经传递了{id}参数,直接用这个$id查找模型更可靠,不用从$request->id取(万一请求里没传id就会出错):
public function postSlideUpdate(Request $request,$id) { $product = Slide::find($id); // 这里处理你的更新逻辑,比如填充字段 // $product->title = $request->title; 或者用$product->fill($request->all()) $product->save(); }
内容的提问来源于stack exchange,提问作者Quan Nguyen
相关产品推荐
相关产品推荐

