Axios Params 序列化解决方案

Axios Params 序列化解决方案(paramsSerializer)

这篇笔记解决什么问题

当你遇到下面任一情况时,这篇笔记可以直接给出方案:

  • 前端传了数组/对象,后端却"收不到"或结构不对
  • 同一个参数在不同接口上格式要求不一致([]、下标、重复 key)
  • 你不确定该用 Axios 内置配置,还是引入 qs

30 秒选型(先看这里)

  • 只用扁平对象 + 普通数组:用 Axios 内置 paramsSerializer.indexes
  • 有复杂嵌套对象、严格后端协议:用 qs.stringify
  • 想团队统一风格:在 axios 实例里一次性配置,不要散落在每个接口

paramsSerializer 是什么(定义)

paramsSerializer 用来控制 Axios 如何把 params 序列化成 URL query string。

  • 作用对象:params
  • 不作用于:data(请求体)、路径参数(如 /users/:id)
  • 即使是 POST/PUT,只要传了 params,它也会生效

示例:

ts 复制代码
axios.post('/users', data, {
  params: { page: 1 },
})

Axios 内置三种序列化方式(数组)

假设:

ts 复制代码
params = { tags: ['red', 'blue'] }
配置 结果 适用场景
indexes: false tags[]=red&tags[]=blue 常见 PHP/部分后端习惯(Axios 默认)
indexes: true tags[0]=red&tags[1]=blue 后端需要明确索引
indexes: null tags=red&tags=blue 后端按重复 key 解析数组

示例:

ts 复制代码
axios.get('/users', {
  params: { tags: ['red', 'blue'] },
  paramsSerializer: { indexes: null },
})

什么时候需要 qs

如果你有以下需求,建议直接用 qs:

  • 嵌套对象较深(如 filter[name]=tom)
  • 后端对参数格式有明确规范
  • 需要统一控制空值、编码、数组格式、键排序

示例:

ts 复制代码
import qs from 'qs'

axios.get('/users', {
  params: { filter: { name: 'tom' }, tags: ['a', 'b'] },
  paramsSerializer: {
    serialize: (params) => qs.stringify(params, { arrayFormat: 'repeat' }),
  },
})

推荐落地方式(项目级)

把策略放到请求实例,统一生效:

ts 复制代码
const request = axios.create({
  baseURL: '/api',
  paramsSerializer: {
    indexes: null,
  },
})

一句话结论

paramsSerializer 只负责"params 怎么拼到 URL 上";内置够用就别加库,复杂协议再用 qs。

相关推荐
子兮曰4 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰4 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
前端小万4 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝4 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
三十而立洋4 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
卡布鲁4 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
汉堡大王95274 天前
Jev:不是聊天机器人, 而是一个智能 if 语句
前端·人工智能·后端
梦想很大很大4 天前
从运行事实到回归证据:Workrun 的 Telemetry 与 Evaluation 实践
前端·人工智能·后端
计算机魔术师4 天前
Meta Muse agent 接入 Shopify 的 Shop Pay 实现代理式购物
前端
沙蒿同学4 天前
我用 Go 搭了一条 AI Agent 流水线:从 1 张商品图到一整套淘宝详情页
前端·javascript·后端