← [ BACK_TO_NOTES ]

Axios 数据序列化

Axios 如何处理 JSON、x-www-form-urlencoded 和 multipart/form-data。

#concept #growing #network #browser #http #javascript #axios

[!info] related notes

Axios 数据序列化

一句话定义

Axios 会把普通对象默认按 JSON 发送,但也支持 URL 编码和 multipart 表单。

核心内容

JSON

await axios.post('/user', { name: 'Tom' })

Axios 默认会把普通对象按 JSON 处理;更细的转换可以交给 transformRequest / transformResponse。

application/x-www-form-urlencoded

适合传统表单或后端明确要求 URL 编码的接口。简单字符串字段可显式用 URLSearchParams:

const body = new URLSearchParams({ name: 'Tom', city: '北京' });
await axios.post('/user', body);

嵌套对象和数组的编码方式需要与后端约定,不能把任意对象直接交给 URLSearchParams 构造器后期待保留结构。Axios 的自动表单序列化还受 Content-Type、版本和配置影响。

multipart/form-data

适合文件上传与混合字段提交。浏览器中的示例:

const body = new FormData();
body.append('name', 'Tom');
body.append('file', file); // file 是文件选择器提供的 File
await axios.post('/upload', body);

浏览器原生 FormData 通常让 adapter/浏览器生成带 boundary 的 Content-Type,不要手工拼一个缺 boundary 的头。全局固定 application/json 的实例不应原样用于所有上传路径;Node 的 FormData、文件流与 adapter 支持需按版本核对。

常见直觉

  • params 走 URL
  • data 用于请求体;GET/HEAD 的可用行为取决于协议和 adapter,不应依赖 GET body
  • 表单和文件上传要注意 Content-Type

边界与易混淆点

  • JSON 不等于表单编码
  • 文件上传不只是把对象塞进 data
  • Node 和浏览器对流式/文件处理细节不同

最短记忆方式

  • 默认 JSON
  • 表单可 URL 编码
  • 文件上传用 multipart
创建于 2026/4/7 更新于 2026/10/7
Digital Biome
Access

键盘导航

j / k / ↑ / ↓
选择对象
Enter / o
打开选择
/ 或 Ctrl+K
全站搜索
i / f / 1–4
筛选当前列表
g → h / l / p / t / a
首页 / 笔记 / 项目 / 工具 / About
r → 1–9
打开所选对象的关联
u
返回上一页
Esc
关闭浮层 / 取消命令;输入框内清空文本