我正在尝试通过axios向laravel发送删除请求,如下所示:
axios.delete('api/users/' + this.checkedNames)
.then((response) => {
console.log(response)
}, (error) => {
// error callback
})
Run Code Online (Sandbox Code Playgroud)
现在从axios文档中我读到,对于删除请求,我们应该使用configObject,以便可以将上述内容重写为:
axios.delete('api/users/', {params: {ids:
this.checkedNames})
.then((response) => {
console.log(response)
}, (error) => {
// error callback
})
Run Code Online (Sandbox Code Playgroud)
然后我Route::resource('users', 'UsersController');在api.php中,因此删除的默认路由为:
DELETE| api/users/{user}| users.destroy
Run Code Online (Sandbox Code Playgroud)
控制器的方法是:
|App\Http\Controllers\UsersController@destroy
Run Code Online (Sandbox Code Playgroud)
当我传递单个ID(例如api / users / 12)时,我能够按预期删除用户,它可以正确删除,但是当我尝试传递上述数组时,事情就变得复杂了。
如果我按照axios文档进行尝试,axios.delete('api/users/', {params: {id: this.checkedNames}})它似乎是在发送此消息,http://lorillacrud.dev/api/users?id[]=21&id[]=20但我得到的是405方法不允许。
如果我尝试axios.delete('api/users/' + this.checkedNames ),我得到http://lorillacrud.dev/api/users/20,21我的破坏方法,我可以抢IDS和删除等等,但我想知道这是否是做了正确的方法是什么?
我似乎使它工作了,但是我不明白,因此仍然感谢任何帮助以使我了解我实际上正在做什么!
因此,如果更改为:
axios.delete('api/users/destroy', {params: {'id': this.checkedNames})
Run Code Online (Sandbox Code Playgroud)
在我的销毁方法中:
if ($request->id) {
foreach ($request->id as $id) {
User::destroy($id); …Run Code Online (Sandbox Code Playgroud)