程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

在vue中get请求如何传递数组参数

发布于2022-08-03 06:58     阅读(1410)     评论(0)     点赞(27)     收藏(5)


问题

当我们需要通过get方式传递一个包含数组的对象作为参数,例如:

const params = {
  sort: ['id,desc', 'name,asc'],
  type: 'term'
}

预期是解析为:https://www.cnblogs.com/api/test?sort=id%2Cdesc&sort=name%2Casc&type=term
然而真相是这样的:https://www.cnblogs.com/api/test?&sort[]=id,desc&sort[]=name,asc&type=term,后台是不可能解析到传递的参数。

解决方案

第1步:安装qs插件(如果安装过了引入就可以了)

// 在项目中使用命令行工具输入
npm install qs
// 引入qs插件
import qs from 'qs'

第2步:转码

用qs插件把参数转码

qs.stringify(params, { arrayFormat: 'repeat' })
// 输出结果: sort=id%2Cdesc&sort=name%2Casc&type=term

第3步:更换传值方式(很重要)

作为一个优秀的前端工程师,我们习惯用json形式的接口传值方式,例如:

export function getTest(params) {
  return request({
    url: 'api/test',
    method: 'get',
    params
  })
}
// https://www.cnblogs.com/api/test
// 这种是没有效果的

无奈,这种习惯方式这对于我们的需求是行不通的,所以尝试了这种方式:

export function getTest(params) {
  return request({
    url: 'api/test',
    method: 'get',
    params: qs.stringify(params, { arrayFormat: 'repeat' })
  })
}
// https://www.cnblogs.com/api/test?0=sort=id%2Cdesc&sort=name%2Casc&type=term
// 虽然看似达到预期了,但并没有达成一致,字符串拼接结果中间带了 “0=” 还是行不通

于是尝试原始方式,用url字符串拼接的形式

export function getTest(params) {
  return request({
    url: 'api/test?' + qs.stringify(params, { arrayFormat: 'repeat' }),
    method: 'get'
  })
}
// https://www.cnblogs.com/api/test?sort=id%2Cdesc&sort=name%2Casc&type=term
// 和我们的预期达成一致,这才是我们要的结果

效果图

解决方案第3步的第1段代码效果(未解决)

解决方案第3步的第1段代码

解决方案第3步的第2段代码效果(未解决)

解决方案第3步的第2段代码

解决方案第3步的第3段代码效果(已解决)

解决方案第3步的第3段代码

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'

原文链接:https://blog.csdn.net/onlyAngel521/article/details/123108757




所属网站分类: 技术文章 > 博客

作者:西小口到了吗

链接:http://www.qianduanheidong.com/blog/article/381411/292b0b6ac95a19b9a71e/

来源:前端黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

27 0
收藏该文
已收藏

评论内容:(最多支持255个字符)