axios POST 请求体编码笔记

axios POST 请求体编码笔记

一句话结论

在 axios 里发表单参数,传字符串 ids=值,不要传普通对象 { ids }。

核心:两个互相独立的机制

机制一 · 是否序列化,由「数据类型」决定

axios 0.21.4 的 transformRequest 只有三个分支:

传入类型 axios 的处理 最终 body
URLSearchParams 自动 .toString() a=1&b=2
普通对象 {} 自动 JSON.stringify {"ids":"..."}
字符串 原样返回,不处理 你写什么就发什么

源码:node_modules/axios/lib/defaults.js L70-L78

机制二 · 显示成什么分区,由「Content-Type」决定

axios 给 post 写死了默认头:

js 复制代码
var DEFAULT_CONTENT_TYPE = { 'Content-Type': 'application/x-www-form-urlencoded' };

源码:node_modules/axios/lib/defaults.js L7-L9

  • Content-Type 是 x-www-form-urlencoded → Chrome 显示 Form Data ,按 name=value 用 & 拆分
  • body 是 JSON 文本 → Chrome 显示 Request Payload,渲染成 JSON 树

⚠️ Form Data 分区必须 有 =,否则只显示一行裸值,没有"参数名"。

三种写法对照

情况 1 · 传裸字符串 情况 2 · 传对象 情况 3 · 传 ids=值 ✅
代码 "377...,377..." { ids } ids=${ids}
axios 处理 原样发送 自动 JSON 化 原样发送
实际 body 377...,377... {"ids":"377...,377..."} ids=377...,377...
Content-Type urlencoded JSON 语义 urlencoded
DevTools 显示 Form Data · 无键值 Request Payload · JSON Form Data · 键值完整
后端结果 ❌ 拿不到 ids ❌ 表单解析失败 ✅ 正确拿到

排错速查表

看到的现象 根因
Form Data 里只有一行裸值、没有参数名 传的是裸字符串,缺 name= 前缀
显示 Request Payload / 带 {} 传了普通对象,axios 自动 JSON 化了
后端说收不到参数 body 形态和 Content-Type 不匹配
想发 JSON 却发成了表单 忘了显式写 Content-Type: application/json

可用的三种正确写法

js 复制代码
// 1. 自己拼串(本项采用)
await post(url, `ids=${ids}`)

// 2. URLSearchParams,axios 会自动 toString
await post(url, new URLSearchParams({ ids }))

// 3. 需要 JSON 时显式指定头
await post(url, { ids }, { headers: { 'Content-Type': 'application/json' } })

第 3 条注意:axios 对普通对象 始终是 JSON 化,即使配了 x-www-form-urlencoded 头也不会转成 name=value,所以真正可靠的只有第 1、2 种。


相关推荐
数据掘金1 小时前
白屏故障定位:从资源请求到路由渲染的排查顺序
前端
程序员Sunday1 小时前
ES Module 和 CommonJS 有什么区别?循环依赖时会发生什么?
前端·javascript·面试
玲珑意1 小时前
Vue 3 + DAG拓扑排序 + SSE流式人机协同:现代AI工作流编排系统的工程化实践
前端
三十而立洋1 小时前
TypeScript 7.0 深度解析:新特性、Go 原生编译器及与 TypeScript 6.0 的区别
前端·typescript·前端工程化
编程之道1 小时前
从VUE2到VUE3学习过程遇到的一些困惑
前端
用户817595220131 小时前
QNAP NAS 搭建个人网站实战
前端
创了么OPC2 小时前
用 1.18 美元搭好个人站点:一人公司可抄作业的完整清单
前端
deli0072 小时前
1 个汉字算几个 token?实测中英文 prompt 与代码的编码差异
前端
无限聚核2 小时前
抖音 certificate.prepare 之后怎么验券?和美团 msconsume 差在哪,无限聚核
前端·微信小程序