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 相关文章推荐
jquery怎样实现ajax联动框(二)
Mar 08 Javascript
jquery弹出框的用法示例(2)
Aug 26 Javascript
js实现基于正则表达式的轻量提示插件
Aug 29 Javascript
基于JavaScript实现快速转换文本语言(繁体中文和简体中文)
Mar 07 Javascript
javascript动画之磁性吸附效果篇
Dec 09 Javascript
Node.js如何响应Ajax的POST请求并且保存为JSON文件详解
Mar 10 Javascript
vue2.0父子组件间通信的实现方法
Apr 19 Javascript
H5上传本地图片并预览功能
May 08 Javascript
bootstrap table实现点击翻页功能 可记录上下页选中的行
Sep 28 Javascript
vue刷新和tab切换实例
Feb 11 Javascript
vue语法自动转typescript(解放双手)
Sep 18 Javascript
vue过滤器实现日期格式化的案例分析
Jul 02 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执行速度全攻略(下)
2006/10/09 PHP
PHP如何将XML转成数组
2016/04/04 PHP
动态调用css文件——jquery的应用
2007/02/20 Javascript
改变javascript函数内部this指针指向的三种方法
2010/04/23 Javascript
jquery获取自定义属性(attr和prop)实例介绍
2013/04/21 Javascript
JavaScript中的style.cssText使用教程
2014/11/06 Javascript
实现图片预加载的三大方法及优缺点分析
2014/11/19 Javascript
jQuery根据表单name获取值的方法
2016/05/24 Javascript
jQuery 调用WebService 实例讲解
2016/06/28 Javascript
微信小程序模板之分页滑动栏
2017/02/10 Javascript
JS函数节流和函数防抖问题分析
2017/12/18 Javascript
JS如何获取地址栏的参数实例讲解
2018/10/06 Javascript
详解webpack打包第三方类库的正确姿势
2018/10/20 Javascript
写gulp遇到的ES6问题详解
2018/12/03 Javascript
小程序日历控件使用方法详解
2018/12/29 Javascript
微信小程序MUI导航栏透明渐变功能示例(通过改变rgba的a值实现)
2019/01/24 Javascript
Node.js 实现抢票小工具 & 短信通知提醒功能
2019/10/22 Javascript
基于javascript实现贪吃蛇经典小游戏
2020/04/10 Javascript
javascript实现前端成语点击验证优化
2020/06/24 Javascript
[02:37]2018DOTA2亚洲邀请赛赛前采访 VP.no[o]ne心中最强SOLO是谁
2018/04/04 DOTA
Python爬取网易云音乐热门评论
2017/03/31 Python
关于python pycharm中输出的内容不全的解决办法
2020/01/10 Python
keras自定义回调函数查看训练的loss和accuracy方式
2020/05/23 Python
Keras使用ImageNet上预训练的模型方式
2020/05/23 Python
button在IE6/7下的黑边去除方案
2012/12/24 HTML / CSS
德国低价购买灯具和家具网站:Style-home.de
2016/11/25 全球购物
路易威登和香奈儿手袋:LuxeDH
2017/01/12 全球购物
伦敦剧院门票:London Theatre Direct
2018/11/21 全球购物
Linux管理员面试题 Linux admin interview questions
2014/11/01 面试题
《月球之谜》教学反思
2014/04/10 职场文书
推广活动策划方案
2014/08/23 职场文书
2014年学生会工作总结
2014/11/07 职场文书
安全生产警示教育活动总结
2015/05/09 职场文书
五年级语文教学反思
2016/03/03 职场文书
Nginx如何限制IP访问只允许特定域名访问
2022/07/23 Servers
Win11 Beta 预览版 22621.575 和 22622.575更新补丁KB5016694发布(附更新内容大全)
2022/08/14 数码科技