[ 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 字段指定数据。

相关推荐
月明水寒2 分钟前
IDEA2026.1 vue文件报错
前端·javascript·vue.js·intellij-idea·idea·intellij idea
IpdataCloud3 分钟前
不同业务如何选IP查询更新频率?离线与在线协同策略
前端·网络协议·tcp/ip·html
牛奶4 分钟前
不经过服务器,两个人怎么直接通话?
前端·websocket·webrtc
神探小白牙8 分钟前
3D饼图,带背景图和自定义图例(threejs)
开发语言·前端·javascript·3d·vue
IT_陈寒11 分钟前
SpringBoot自动配置的坑差点没把我埋了
前端·人工智能·后端
光影少年16 分钟前
高级前端需要学习那些东西?
前端·人工智能·学习·aigc·ai编程
jiayong2319 分钟前
第 41 课:任务详情抽屉里的快速筛选联动
开发语言·前端·javascript·vue.js·学习
momo(激进版)19 分钟前
常用的skills安装记录
前端
zimoyin23 分钟前
Stoplight Elements WebComponents 原生 WEB 组件化技术生成 Swagger优美界面
前端
天若有情67333 分钟前
【开源推荐】form-validator-cn 轻量级中文表单校验库 | TS 零依赖、极简开箱即用
前端·npm·开源·node·js·表单校验