如何让Axios将请求参数中的对象转为方括号嵌套URL参数格式?
解决Axios GET请求嵌套参数序列化格式问题
核心方案:自定义参数序列化器
Axios默认会将嵌套对象参数序列化为JSON字符串,要得到exists[energyDeliveryPoint]=false这种格式,需要借助qs库处理参数序列化——它默认支持这种表单式的嵌套参数格式。
步骤1:安装qs库
npm install qs # 或使用yarn yarn add qs
步骤2:在请求中配置paramsSerializer
修改你的请求代码,添加paramsSerializer配置项:
import qs from 'qs'; axios.get('/consumption_reports', { params: { exists: { energyDeliveryPoint : false } }, paramsSerializer: (params) => qs.stringify(params) })
执行后生成的URL参数就会是consumption_reports?exists[energyDeliveryPoint]=false,完全匹配你的需求。
可选:全局配置Axios
如果项目中有大量同类请求,不想重复配置,可以给Axios设置全局默认序列化规则:
import axios from 'axios'; import qs from 'qs'; axios.defaults.paramsSerializer = (params) => qs.stringify(params);
之后所有GET请求都会自动用qs序列化参数,无需单独配置。
内容的提问来源于stack exchange,提问作者ThomasL
相关产品推荐
相关产品推荐

