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 相关文章推荐
网页常用特效代码整理
Jun 23 Javascript
SharePoint 客户端对象模型 (一) ECMA Script
May 22 Javascript
javascript 原型继承介绍
Aug 30 Javascript
JavaScript取得鼠标绝对位置程序代码介绍
Sep 16 Javascript
jQuery固定浮动侧边栏实现思路及代码
Sep 28 Javascript
详解jQuery中的元素的属性和相关操作
Aug 14 Javascript
javascript正则表达式中分组详解
Jul 17 Javascript
清除浏览器缓存的几种方法总结(必看)
Dec 09 Javascript
vue使用Element组件时v-for循环里的表单项验证方法
Jun 28 Javascript
vue自定义移动端touch事件之点击、滑动、长按事件
Jul 10 Javascript
vue项目持久化存储数据的实现代码
Oct 01 Javascript
layui-tree实现Ajax异步请求后动态添加节点的方法
Sep 23 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
phpMyAdmin 安装及问题总结
2009/05/28 PHP
php实现处理输入转义字符的代码
2015/11/08 PHP
php中二分法查找算法实例分析
2016/09/22 PHP
SUN的《AJAX与J2EE》全文译了
2007/02/23 Javascript
json格式化/压缩工具 Chrome插件扩展版
2010/05/25 Javascript
Js,alert出现乱码问题的解决方法
2013/06/19 Javascript
js通过元素class名字获取元素集合的具体实现
2014/01/06 Javascript
angularJS结合canvas画图例子
2015/02/09 Javascript
JS实现文字放大效果的方法
2015/03/03 Javascript
js控制div弹出层实现方法
2015/05/11 Javascript
JavaScript操作Cookie方法实例分析
2015/05/27 Javascript
Angular的模块化(代码分享)
2016/12/26 Javascript
js实现显示手机号码效果
2017/03/09 Javascript
AngularJS 实现点击按钮获取验证码功能实例代码
2017/07/13 Javascript
vue axios同步请求解决方案
2017/09/29 Javascript
js将键值对字符串转为json字符串的方法
2018/03/30 Javascript
创建echart多个联动的示例代码
2018/11/23 Javascript
vue插件draggable实现拖拽移动图片顺序
2018/12/01 Javascript
vue 出现data-v-xxx的原因及解决
2020/08/04 Javascript
学习python (1)
2006/10/31 Python
跟老齐学Python之for循环语句
2014/10/02 Python
Python基于select实现的socket服务器
2016/04/13 Python
深入理解python中的闭包和装饰器
2016/06/12 Python
详解python的webrtc库实现语音端点检测
2017/05/31 Python
python Tcp协议发送和接收信息的例子
2019/07/22 Python
Django自定义用户表+自定义admin后台中的字段实例
2019/11/18 Python
如何写python的配置文件
2020/06/07 Python
python如何调用百度识图api
2020/09/29 Python
Python实现随机爬山算法
2021/01/29 Python
CSS3让登陆面板3D旋转起来
2016/05/03 HTML / CSS
惠普香港官方商店:HP香港
2019/04/30 全球购物
保护环境建议书100字
2014/05/13 职场文书
2014年度安全工作总结
2014/12/04 职场文书
2014年防汛工作总结
2014/12/08 职场文书
婚礼双方父亲致辞
2015/07/27 职场文书
100句人生哲理语录集锦:强者征服今天,懒汉坐等明天
2019/10/18 职场文书