我在put方法[![在这里输入图片描述] [1]] [1]遇到错误

我正在使用axios进行发布,并提取获取。我不知道put方法在axios上如何工作,所以如果有人可以帮忙,我将非常感激。

Component.vue脚本

editItem (item) {
        this.dialog = true
        this.editedIndex = this.departments.indexOf(item)
        this.id = item.id;
        this.department = item.department_name;

      },
  save() {
    const { department } = this
    if (this.editedIndex > -1) {
      fetch('/api/department', {
        method: 'put',
        body: JSON.stringify(this.department),
        headers: {
          'content-type': 'application/json'
        }
      })
    } else {
      axios
      .post('/api/department', { department })
      .then(response => this.initialize())
      .catch(error => console.log(error))
    }
    this.close()
  },


控制者

public function store(Request $request) {
    $department = $request->isMethod('put') ? Department::findOrFail($request->id) : new Department;

    $department->id = $request->input('id');
    $department->department_name = $request->input('department');

    if($department->save()) {
      return response()->json($department);;
    }
  }


API

Route::get('departments', 'DepartmentController@index');
Route::get('department/{id}', 'DepartmentController@show');
Route::post('department', 'DepartmentController@store');
Route::put('department', 'DepartmentController@store');
Route::delete('department/{id}', 'DepartmentController@destroy');


post方法有效,但不能如上述错误所示那样放置。

最佳答案

这是因为您没有在后端实现put方法。该异常表明发出了放置请求,因此问题可能与Axios无关。

Route::put('foo/bar', function()
{
    //
});


编辑:
如果发出PUT请求,则应将其发送到与资源有关的端点(以创建或更新)。这是一个幂等的请求,这意味着,如果发送请求,则无论发送一次还是多次,都会导致相同的结果。
请尝试这样的事情:

Route::put('department/{id}', 'DepartmentController@update')

public function update(Request $request, $id)  {


并确保request方法将id作为请求中的path参数添加。

10-06 07:47