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 相关文章推荐
解决3.01版的jquery.form.js中文乱码问题的解决方法
Mar 08 Javascript
关于scrollLeft,scrollTop的浏览器兼容性测试
Mar 19 Javascript
javascript中slice(),splice(),split(),substring(),substr()使用方法
Mar 13 Javascript
jquery简单实现网页层的展开与收缩效果
Aug 07 Javascript
论Bootstrap3和Foundation5网格系统的异同
May 16 Javascript
Bootstrap使用基础教程详解
Sep 05 Javascript
浅谈vue项目重构技术要点和总结
Jan 23 Javascript
vue路由懒加载的实现方法
Mar 12 Javascript
react中使用swiper的具体方法
May 15 Javascript
vue实现动态添加数据滚动条自动滚动到底部的示例代码
Jul 06 Javascript
利用原生的JavaScript实现简单拼图游戏
Nov 18 Javascript
使用JS前端技术实现静态图片局部流动效果
Aug 05 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和ACCESS写聊天室(八)
2006/10/09 PHP
超级好用的一个php上传图片类(随机名,缩略图,加水印)
2010/06/30 PHP
深入了解 register_globals (附register_globals=off 网站打不开的解决方法)
2012/06/27 PHP
php基本函数汇总
2015/07/09 PHP
Joomla数据库操作之JFactory::getDBO用法
2016/05/05 PHP
php简单统计在线人数的方法
2016/05/10 PHP
PHP使用PHPExcel实现批量上传到数据库的方法
2017/06/08 PHP
利用 fsockopen() 函数开放端口扫描器的实例
2017/08/19 PHP
php获取是星期几的的一些常用姿势
2019/12/15 PHP
js实现星星打分效果的方法
2020/07/05 Javascript
jquery实现鼠标滑过显示二级下拉菜单效果
2015/08/24 Javascript
基于javascript制作微信聊天面板
2020/08/09 Javascript
一个超简单的jQuery回调函数例子(分享)
2016/08/08 Javascript
vue获取dom元素注意事项
2017/12/28 Javascript
Element-ui DatePicker显示周数的方法示例
2019/07/19 Javascript
6种JavaScript继承方式及优缺点(小结)
2020/02/06 Javascript
用jQuery实现抽奖程序
2020/04/12 jQuery
[07:38]2014DOTA2国际邀请赛 Newbee顺利挺进胜者组赛后专访
2014/07/15 DOTA
[02:00]DOTA2英雄COSPLAY闹市街头巡游助威2015国际邀请赛
2015/08/02 DOTA
[01:28:44]DOTA2-DPC中国联赛定级赛 RNG vs iG BO3第一场 1月10日
2021/03/11 DOTA
Python3基础之函数用法
2014/08/13 Python
Python图像灰度变换及图像数组操作
2016/01/27 Python
unittest+coverage单元测试代码覆盖操作实例详解
2018/04/04 Python
对python读取CT医学图像的实例详解
2019/01/24 Python
Python3中configparser模块读写ini文件并解析配置的用法详解
2020/02/18 Python
Jupyter Notebook打开任意文件夹操作
2020/04/14 Python
html5 乒乓球(碰撞检测)实例二
2013/07/25 HTML / CSS
纽约JewelryAffairs珠宝店:精细金银时尚首饰
2017/02/05 全球购物
阿里云:Aliyun.com
2017/02/15 全球购物
Linux上比较文件的命令都有哪些
2012/02/24 面试题
品学兼优的大学生自我评价
2013/09/20 职场文书
思想品德评语大全
2014/12/31 职场文书
《赵州桥》教学反思
2016/02/17 职场文书
离婚协议书格式范本
2016/03/18 职场文书
laravel ajax curd 搜索登录判断功能的实现
2021/04/17 PHP
十大最强水系宝可梦,最美宝可梦排第三,榜首大家最熟悉
2022/03/18 日漫