Delete Method in Axios, Laravel and VueJS Delete Method in Axios, Laravel and VueJS laravel laravel

Delete Method in Axios, Laravel and VueJS


It is because of the method signatures. The default delete route when using Resource expects a single parameter. So when doing:

axios.delete('api/users', {params: {'id': this.checkedNames})

you are missing a required parameter. The route definition is

Route::delete('api/users/{id}', 'UserController@destroy');// You are missing `id` here. So it won't work. 

Usually, if you are going to stray away from the default behavior, it is recommended to create your own function. So you could leave the default destroy($id) function as is to delete a single entry and write a new function that will delete many. Start by adding a route for it

Route::delete('api/users', 'UserController@deleteMany');

Then define the function to handle it

public function deleteMany(Request $request){    try     {        User::whereIn('id', $request->id)->delete(); // $request->id MUST be an array        return response()->json('users deleted');    }    catch (Exception $e) {        return response()->json($e->getMessage(), 500);    }}

To summarise, your problem came from route definition. Your route from Axios did not match the route definition from Laravel, hence the 405.


I also experienced the same problem. This works for me:

deletePost: function(id) {                axios.post('/posts/'+id,{_method: 'delete'})            }

Using axios.post() instead of axios.delete, and sending _method "delete"


I was having issue to send data as model while making delete request. I found a fix as follows:

deleteCall (itemId, jsonModel) {return api.delete(`/users/${itemId}/accounts/`, {data: jsonModel})},