注:默认已经install与引入qs

1.POST

  • 一 .json请求,那么就不需要修改什么。
  • 二.form-data或x-www-form-urlencoded请求:

可以在发送请求的时候加上:

this.axios({
	url:'请求地址',
	method:'post',
	data: {'key':'值'},
	transformRequest: [data => {
              return this.qs.stringify(data)
    }]
})

或者可以在拦截器里加上(当然要在拦截器文件处引入qs)

axios.interceptors.request.use(
	config => {
		config.data = qs.stringify(config.data)
		return config
	},
	error => {
	}
)
  • 三.post携带数组:
    只需对qs语句进行修改
qs.stringify(config.data, { arrayFormat: 'repeat', allowDots: true })

2.GET

携带数组传参:

this.axios({
	url:'请求地址',
	method: 'get',
	params: {
		paramArr:['1','2']
	},
	paramsSerializer: params => {
          return this.qs.stringify(params, { indices: false })
    }
})

关键在于用paramsSerializer进行序列化。

  • 2022.5.19 补充说明
    如遇到传递数组的参数形式如:
const params = {
	thisArr: '1,2,3' //[1,2,3]
}

如果使用的是axios作为请求库,那么这样直接传参是不行的。因为,会被再次编码成%252c而非%2c,这种情况可以直接在路径上进行参数的拼接即可,例如:
http://test/api?thisArr=1,2,3

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐