[ BUG ] 踩坑 Axios Delete 请求传参

踩坑 Axios Delete 请求传参

问题描述

今天在写前后端交互时,我想将 data 数据通过 delete 进行传参 axios.delete("/info", data),但是发现后端一直提示参数错误,我看了看代码也没错啊。跟 postpatch 一样的写法为什么会出现参数错误。然后花了大量时间检查代码,最终还是不行。

无奈我只能在网上寻找答案,最后才发现是因为 Delete 本身的问题,下面是问题的解决办法:

解决办法

我们将数据对象 data 作为第二个参数直接传递给 Axiospost 方法。Axios 会将该对象自动转换为请求体,并发送到服务器上。

javascript 复制代码
const text = async () => {
  // 请求Post
  await axios.post("/info", data)
  // 请求Patch
  await axios.patch("/info", data)

  // 请求Delete
  await axios.delete("/info", data) // 错误写法
}

然而,对于 DELETE 请求,情况略有不同。根据 RESTful API 设计,DELETE 请求通常不包含请求体,而是将数据放在请求 URL 中。但是,一些后端框架默认不解析 DELETE 请求的请求体,因此如果需要在 DELETE 请求中使用请求体,我们需要通知后端框架解析请求体数据。

为了解决这个问题,Axios 提供了一种特殊的方式。我们需要使用一个对象字面量作为第二个参数,且该对象包含一个自定义的 data 字段来传递对象数据

javascript 复制代码
axios.delete("/info", { data })

总结

POST 请求中,我们可以直接将数据对象作为第二个参数传递给 Axios,因为 POST 请求通常包含请求体。但是在 DELETE 请求中,我们需要使用对象字面量套一个自定义的 data 作为第二个参数,并使用 data 字段指定数据。

相关推荐
HUMHSX16 分钟前
Vue 项目启动全流程解析:从入口文件到全局指令注册与页面渲染
前端·javascript·vue.js
有颜有货27 分钟前
PMC生产排产的4种算法,一次讲清
java·服务器·前端
小虎牙00729 分钟前
Android kotlin图片库Coil源码详解
android·前端
随风一样自由39 分钟前
【前端领域】前端开发核心应用场景与落地实践
前端·前端框架
an317421 小时前
弹窗数据流设计的两种高阶架构实践
前端·vue.js·架构
谢尔登1 小时前
【React】 状态管理方案
前端·react.js·前端框架
用户2136610035722 小时前
Vue商品详情与放大镜组件
前端·javascript
半个落月2 小时前
从Tapas小Demo理清localStorage、事件与this
前端·javascript
李明卫杭州2 小时前
Vue2 中 v-model 处理不同数据结构的技巧
前端·javascript·vue.js
李明卫杭州2 小时前
使用 computed 处理 v-model 复杂数据结构
前端·javascript·vue.js