我在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参数添加。