序列化paramsSerializer的使用

在Vue项目中,使用axios封装get方法时可能遇到数组参数和时间参数的问题。数组参数默认会带有中括号,如`ids:[1,2,3]`,通过引入qs库并设置`paramsSerializer`可以将arrayFormat设为repeat解决。时间参数如2023-01-0112:00:00,空格会被转换为+,导致400错误,使用paramsSerializer编码成%20能保证接口调用成功。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在vue项目中,封装axios的get方法时,需要用到paramsSerializer

1、当传参为数组时,默认的传参数据,控制台的payload中的数组key名称后边会多一个[],例如传参ids: [1,2,3],解析出来的是在这里插入图片描述

如果需要去掉中括号,就需要使用到paramsSerializer
如下

import axios from 'axios';
import qs from 'qs'// 引入qs
const axios_ = axios.create({
  baseURL: config.baseURL,
  timeout: 60000, // 请求时间超过60秒视为超时
  withCredentials: true,
  headers: {
    'X-Requested-With': 'XMLHttpRequest'
  },
  paramsSerializer(params) {
    return Qs.stringify(params, { arrayFormat: 'repeat', allowDots: true });
  }
});


或者针对某一个get请求来设置

axios.get(url,{
	 params, 
	 paramsSerializer(params) {
	    return Qs.stringify(params, { arrayFormat: 'repeat', allowDots: true });
	  }
}).then(res => {}).catch(err => {})
2、对于传时间参数时,如‘2023-01-01 12:00:00’,如果没有配置paramsSerializer,中间的空格,会被解析成+

在这里插入图片描述
payload中是正常的,但是自动拼接到url后,空格就变成了+,会导致调用接口失败,报400。此时,需要后台特殊处理,或者前端配置paramsSerializer。
配置paramsSerializer后,空格就会被编码成%20
在这里插入图片描述
此时调用接口就正常了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值