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 实现父窗口引用弹出窗口的值的脚本
Aug 07 Javascript
Jquery Ajax 学习实例2 向页面发出请求 返回JSon格式数据
Mar 15 Javascript
js实现编辑div节点名称的方法
Dec 17 Javascript
JavaScript高级程序设计(第三版)学习笔记6、7章
Mar 11 Javascript
改变checkbox默认选中状态及取值的实现代码
May 26 Javascript
jQuery实现select下拉框获取当前选中文本、值、索引
May 08 jQuery
基于webpack.config.js 参数详解
Mar 20 Javascript
vue监听键盘事件的快捷方法【推荐】
Jul 11 Javascript
基于vue2.0的活动倒计时组件countdown(附源码下载)
Oct 09 Javascript
fetch 如何实现请求数据
Dec 20 Javascript
Javascript异步流程控制之串行执行详解
Sep 27 Javascript
JavaScript 中for/of,for/in 的详细介绍
Nov 17 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
php根据身份证号码计算年龄的实例代码
2014/01/18 PHP
php计算税后工资的方法
2015/07/28 PHP
ThinkPHP 3.2.3实现页面静态化功能的方法详解
2017/08/03 PHP
PHP获取链表中倒数第K个节点的方法
2018/01/18 PHP
js加载读取内容及显示与隐藏div示例
2014/02/13 Javascript
网站基于flash实现的Banner图切换效果代码
2014/10/14 Javascript
JavaScript学习笔记之JS对象
2015/01/22 Javascript
js去除浏览器默认底图的方法
2015/06/08 Javascript
在Node.js应用中使用Redis的方法简介
2015/06/24 Javascript
如何屏蔽防止别的网站嵌入框架代码
2015/08/24 Javascript
JavaScript实现输入框(密码框)出现提示语
2016/01/12 Javascript
巧用jQuery选择器提高写表单效率的方法
2016/08/19 Javascript
简单的js计算器实现
2016/10/26 Javascript
svg动画之动态描边效果
2017/02/22 Javascript
用vue构建多页面应用的示例代码
2017/09/20 Javascript
React BootStrap用户体验框架快速上手
2018/03/06 Javascript
Vue刷新修改页面中数据的方法
2018/09/16 Javascript
解决Vue开发中对话框被遮罩层挡住的问题
2018/11/26 Javascript
iview tabs 顶部导航栏和模块切换栏的示例代码
2019/03/04 Javascript
[02:55]DOTA2英雄基础教程 发条技师
2013/12/04 DOTA
Python 学习笔记
2008/12/27 Python
python中的reduce内建函数使用方法指南
2014/08/31 Python
在Django的URLconf中使用命名组的方法
2015/07/18 Python
详解Django框架中用context来解析模板的方法
2015/07/20 Python
详解Swift中属性的声明与作用
2016/06/30 Python
Python实现字符串逆序输出功能示例
2017/06/24 Python
Python实现简单的获取图片爬虫功能示例
2017/07/12 Python
使用pygame写一个古诗词填空通关游戏
2019/12/03 Python
tensorflow实现打印ckpt模型保存下的变量名称及变量值
2020/01/04 Python
django2.2 和 PyMySQL版本兼容问题
2020/02/17 Python
python如何快速拼接字符串
2020/10/28 Python
利用CSS3实现平移动画效果示例代码
2016/10/12 HTML / CSS
Ivory Isle Designs美国/加拿大:婚礼和活动文具公司
2018/08/21 全球购物
财务总经理岗位职责
2014/02/16 职场文书
银行转正自我鉴定
2014/09/29 职场文书
少先队辅导员事迹材料
2014/12/24 职场文书