vue中get请求如何传递数组参数的方法示例


Posted in Javascript onNovember 08, 2019

前言: vue中在与后端进行数据交互时,使用axios发送请求,不做配置直接使用get请求传递数组类型参数的时候,后端是无法接收数据的,需要对axios一些简单的配置才能让后端完美的接收数组

1、问题

示例代码

let params = {
        statusList: ['OVERDUE', 'DELAY']
       }
       
this.$http.get('/list', params)
      .then(res => {})
      .catch(e => {})

上述代码在不做配置的时候请求信息为:/list?statusList[]=OVERDUE&statusList[]=DELAY对于后端来说,statusList[]形式的提交是无效的,实际需要的是/list?statusList=OVERDUE&statusList=DELAY这种方式的提交。那么我们应该如何来解决这种问题呢?

2、解决方案

2.1 qs插件

qs主要是增加一些安全性的查询字符串解析和序列化字符串的库,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'

上述我们列举了qs中的序列化几种配置,其中{ arrayFormat: 'repeat' }的序列化结果满足我们的条件

2.2 axios配置

axios中有一个专门对数据进行序列化的配置属性paramsSerializer

paramsSerializer: function(params) {
  return Qs.stringify(params, {arrayFormat: 'repeat'})
 },

2.3 具体配置

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

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

3、总结

axios中文文档

qs插件

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript库 开发规则
Jan 31 Javascript
JS获取网页图片name属性的方法
Apr 01 Javascript
vue.js表格分页示例
Oct 18 Javascript
RequireJS简易绘图程序开发
Oct 28 Javascript
Java与JavaScript中判断两字符串是否相等的区别
Mar 13 Javascript
Windows安装Node.js报错:2503、2502的解决方法
Oct 25 Javascript
Babel 入门教程学习笔记
Jun 13 Javascript
JavaScript 下载svg图片为png格式
Jun 21 Javascript
vue-cli脚手架打包静态资源请求出错的原因与解决
Jun 06 Javascript
Vue中img的src是动态渲染时不显示的解决
Nov 14 Javascript
JS+HTML实现自定义上传图片按钮并显示图片功能的方法分析
Feb 12 Javascript
微信小程序后端无法保持session的原因及解决办法问题
Mar 20 Javascript
Vue搭建后台系统需要注意的问题
Nov 08 #Javascript
vue视频播放暂停代码
Nov 08 #Javascript
vue-dplayer 视频播放器实例代码
Nov 08 #Javascript
BootstrapValidator实现表单验证功能
Nov 08 #Javascript
vue项目中定义全局变量、函数的几种方法
Nov 08 #Javascript
Vue修改项目启动端口号方法
Nov 07 #Javascript
vue 父组件通过$refs获取子组件的值和方法详解
Nov 07 #Javascript
You might like
使用JavaScript创建新样式表和新样式规则
2016/06/14 PHP
PHP获取不了React Native Fecth参数的解决办法
2016/08/26 PHP
[原创]php正则删除html代码中class样式属性的方法
2017/05/24 PHP
js 小数取整的函数
2010/05/10 Javascript
JS过滤url参数特殊字符的实现方法
2013/12/24 Javascript
浅谈JavaScript Date日期和时间对象
2014/12/29 Javascript
深入探秘jquery瀑布流的实现
2016/01/30 Javascript
jQuery插件实现表格隔行变色及鼠标滑过高亮显示效果代码
2016/02/25 Javascript
微信小程序实现登录页云层漂浮的动画效果
2017/05/05 Javascript
JS Object.preventExtensions(),Object.seal()与Object.freeze()用法实例分析
2018/08/25 Javascript
express 项目分层实践详解
2018/12/10 Javascript
在Koa.js中实现文件上传的接口功能
2019/10/08 Javascript
[05:31]DOTA2英雄梦之声_第04期_光之守卫
2014/06/23 DOTA
[01:02:20]Mineski vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python字符串、元组、列表、字典互相转换的方法
2016/01/23 Python
Flask框架的学习指南之用户登录管理
2016/11/20 Python
Python定时器实例代码
2017/11/01 Python
Python+OpenCV人脸检测原理及示例详解
2020/10/19 Python
Selenium元素的常用操作方法分析
2018/08/10 Python
Python Image模块基本图像处理操作小结
2019/04/13 Python
python、PyTorch图像读取与numpy转换实例
2020/01/13 Python
tensorflow查看ckpt各节点名称实例
2020/01/21 Python
基于Python3.6中的OpenCV实现图片色彩空间的转换
2020/02/03 Python
Python正则表达式学习小例子
2020/03/03 Python
使用Python爬取Json数据的示例代码
2020/12/07 Python
css3的transition效果和transfor效果示例介绍
2013/10/30 HTML / CSS
html5 figure和figcaption的使用方法
2018/09/10 HTML / CSS
“型”走纽约上东区:Sam Edelman
2017/04/02 全球购物
Clarks鞋法国官方网站:英国其乐鞋品牌
2018/02/11 全球购物
DOM和JQuery对象有什么区别
2016/11/11 面试题
建筑人员岗位职责
2013/12/25 职场文书
优秀班组长事迹
2014/05/31 职场文书
煤矿安全生产月活动总结
2014/07/05 职场文书
关于有小孩的离婚协议书
2014/10/26 职场文书
2016年秋季新学期致辞
2015/07/30 职场文书
七年级作文之我的梦想
2019/10/16 职场文书