Laravel资源控制器DELETE使用Axios抛出405

时间:2018-01-13 13:28:18

标签: laravel laravel-5 axios laravel-5.5

我正在使用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在最新版本。

1 个答案:

答案 0 :(得分:2)

问题是laravel中的资源删除需要通过url发送id

public function destroy($id){
   // ..find delete 
}

在你的情况下,你没有发送id,因此laravel返回notfoundhttpexception

所以将网址改为:let url = BASE_URL_'/items/'+this.id;

Controllers