axios get传递数组 paramsSerializer序列化

1,298 阅读1分钟

1.序列化数组

import axios from 'axios';
import qs from 'qs';

axios.create({
  baseURL: process.env.baseUrl,
  paramsSerializer: (params) => qs.stringify(params, { indices: false }),
 })
 
 
 
qs.stringify({ids: [1, 2, 3]}, { indices: false })
 //形式: ids=1&ids=2&id=3
qs.stringify({ids: [1, 2, 3]}, {arrayFormat: ‘indices‘})
 //形式: ids[0]=1&aids1]=2&ids[2]=3
qs.stringify({ids: [1, 2, 3]}, {arrayFormat: ‘brackets‘})
 //形式:ids[]=1&ids[]=2&ids[]=3
qs.stringify({ids: [1, 2, 3]}, {arrayFormat: ‘repeat‘}) 
//形式: ids=1&ids=2&id=3

// 用法
export function getFileList(params: any) {
  const queryString = qs.stringify(params, { indices: false })
  return http.get(`/file/list?${queryString}`)
}

2.将数组转为字符串

params:{
    listIds: [1,2,3] + ''
}
// 形式: &listIds='1,2,3'

3.使用URLSearchParams

  const queryParams = new URLSearchParams()
  let paramsArr = ['COUNTRY', 'PROVINCE']
  paramsArr.forEach(ele => {
    queryParams.append('projectLevelList', ele)
  })
  axios.get(url,{params: queryParams} )  
  .then(response => {  
    console.log(response.data);  
  })  
  .catch(error => {  
    console.error(error);  
  });
  // 形式: projectLevelList=COUNTRY&projectLevelList=PROVINCE