在GET请求中传数组

在get请求中如果直接传输组:
参数的形式为sourceId[]:1,sourceId[]:2,无法正常那个访问数据;
我们可以采用字符串拼接的方式去实现get请求;


image.png

在url上显示的是
image.png

在请求接口的时候
export const getBusinessData = params =>
  Http.setPromise(`GET`, `/api/v1/app/businessData${params.groupIdStr}`, params)
image.png

以上既可以实现传数组的操作啦

2.qs插件实现序列化

1、qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'indices' })
// 输出结果:'a[0]=b&a[1]=c'
2、qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'brackets' })
// 输出结果:'a[]=b&a[]=c'
3、qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'repeat' })
// 输出结果:'a=b&a=c'
4、qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'comma' })
// 输出结果:'a=b,c'

我们可以在axios请求拦截器中对参数进行序列化配置

axios.interceptors.request.use(async (config) => {
//只针对get方式进行序列化
 if (config.method === 'get') {
   config.paramsSerializer = function(params) {
     return qs.stringify(params, { arrayFormat: 'repeat' })
   }
 }
}

qs插件使用原文原文:[https://segmentfault.com/a/1190000020940523?utm_source=tag-newest](https://segmentfault.com/a/1190000020940523?utm_source=tag-newest)

你可能感兴趣的:(在GET请求中传数组)