【问题标题】:DELETE method with request body in axios and laravel在 axios 和 laravel 中带有请求正文的 DELETE 方法
【发布时间】:2022-01-22 06:23:35
【问题描述】:

我尝试在 Laravel 和 Axios 中使用 DELETE 方法删除备份,但请求返回为空。

控制器

     /**
     * Remove the specified resource from storage.
     * @param Request $request
     */
    public function destroy(Request $request)
    {
        return $request->all();
    }

路线

Route::middleware(['auth'])->prefix('backup')->group(function() {
    Route::get('/', 'BackupController@index');
    Route::delete('/delete', 'BackupController@destroy')->name('backup.delete');
});

Axios 请求

axios.delete(`/backup/delete`,{data: {filename: filename}} )
.then((response)=>{
      console.log(response.data)
   })
.catch((err) => console.error(err.response.data.errors));

Console.log(响应)

我的代码有什么问题?

【问题讨论】:

  • 您正在返回请求。这看起来不像是作为响应返回的有效内容。也许尝试返回一些文本以确保首先有效
  • 我使用了文本,它返回正确,但是DELETE方法发送的正文返回空。
  • `console.log(response)` 中有什么内容?
  • 我在我的问题@EmekaMbah 中添加了console.log(response)
  • 当您尝试在浏览器中访问此内容时会发生什么/backup/delete

标签: javascript php laravel axios laravel-5.8


【解决方案1】:

您通过 axios 发送文件名。然后你在destroy方法中获取文件名并从数据库中获取模型。

路线

Route::delete('api/delete/{filename}', BackupController@destroy')->name('backup.delete');

控制器

$model = App\Models\Backup::where('filename', $request->filename)::first();
$model->destroy();

更新

不推荐使用 DELETE 方法通过 body 发送参数。有些服务器不支持它。但是。

  1. 将方法从 delete 更改为 put 或 POST
axios.put(`/backup/delete`,{data: {filename: filename}} )
.then((response)=>{
      console.log(response.data)
   })
.catch((err) => console.error(err.response.data.errors));
  1. 调整路线
Route::delete('/delete', 'BackupController@destroy')->name('backup.delete');

然后你可以在你的控制器中通过请求对象获取参数(文件名)。

【讨论】:

  • 我需要将文件名作为正文发送到 DELETE 请求中,而不是在 url 中
猜你喜欢
  • 2018-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-14
  • 2019-10-16
  • 2021-01-03
  • 2018-12-06
  • 2022-01-23
相关资源
最近更新 更多