Laravel 资源控制器 DELETE 使用 Axios 抛出 405
Laravel resource controller DELETE throws 405 with Axios
我正在使用 React + laravel 开发一个简单的 crud 应用程序。我正在使用 Axios 向服务器发出请求。 GET,POST 工作正常。我可以使用 POST 方法 (axios.post) 创建一个新项目。但是,当我尝试删除一个项目时,laravel 抛出 405 错误,它代表 'Method Not Allowed'
这是我的路线:
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。
问题是 laravel 中的资源删除期望通过 url 发送 id
。
public function destroy($id){
// ..find delete
}
在你的情况下你没有发送 id,因此 laravel returns a notfoundhttpexception
因此,将 url 更改为 smth:let url = BASE_URL_'/items/'+this.id;
我正在使用 React + laravel 开发一个简单的 crud 应用程序。我正在使用 Axios 向服务器发出请求。 GET,POST 工作正常。我可以使用 POST 方法 (axios.post) 创建一个新项目。但是,当我尝试删除一个项目时,laravel 抛出 405 错误,它代表 'Method Not Allowed'
这是我的路线:
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。
问题是 laravel 中的资源删除期望通过 url 发送 id
。
public function destroy($id){
// ..find delete
}
在你的情况下你没有发送 id,因此 laravel returns a notfoundhttpexception
因此,将 url 更改为 smth:let url = BASE_URL_'/items/'+this.id;