我正在使用react + laravel开发一个简单的crud app。我正在使用Axios向服务器发出请求。 GET,POST工作正常。我可以使用POST方法(axios.post)创建一个新项目。但是,当我尝试删除某个项目时,laravel会抛出405错误,表示“方法不允许”
这是我的路线:
Route::resource('items', 'ItemController');
这是我的destroy()方法:
public function destroy($id)
{
$item = Item::find($id);
$item->delete();
return response()->json('Successfully Deleted');
}
这是我使用axios的删除功能:
export function deleteItem(data) {
let url = BASE_URL+'/items';
return axios.delete(url,data).then((response) => {
return response;
});
}
我对此做了很少的研究,发现laravel也理解'_method'参数。所以我修改了下面的内容:
export function deleteItem(data) {
let url = BASE_URL+'/items';
let payload = {'id' : data, '_method' : 'DELETE'};
return axios.post(url,payload).then((response) => {
return response;
});
}
但仍然没有运气。它总是抛出405.这有什么线索吗?
我正在使用axios& laravel在最新版本。
答案 0 :(得分:2)
问题是laravel中的资源删除需要通过url发送id
。
public function destroy($id){
// ..find delete
}
在你的情况下,你没有发送id,因此laravel返回notfoundhttpexception
所以将网址改为:let url = BASE_URL_'/items/'+this.id;