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 相关文章推荐
cnblogs TagCloud基于jquery的实现代码
Jun 11 Javascript
JavaScript设置IFrame高度自适应(兼容各主流浏览器)
Jun 05 Javascript
Perl Substr()函数及函数的应用
Dec 16 Javascript
canvas实现手机端用来上传用户头像的代码
Oct 20 Javascript
浅谈js对象属性 通过点(.) 和方括号([]) 的不同之处
Oct 29 Javascript
Angular2+国际化方案(ngx-translate)的示例代码
Aug 23 Javascript
基于Vue渲染与插件的加载顺序的问题详解
Mar 05 Javascript
200行代码实现blockchain 区块链实例详解
Mar 14 Javascript
jquery实现的简单轮播图功能【适合新手】
Aug 17 jQuery
JS双向链表实现与使用方法示例(增加一个previous属性实现)
Jan 31 Javascript
vue cli 3.0 搭建项目的图文教程
May 17 Javascript
微信小程序设置滚动条过程详解
Jul 25 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
php4的session功能评述(一)
2006/10/09 PHP
PHP实现单例模式最安全的做法
2014/06/13 PHP
PHP实现恶意DDOS攻击避免带宽占用问题方法
2015/05/27 PHP
PHP上传图片、删除图片简单实例
2016/11/12 PHP
浅谈PHP中的那些魔术常量
2020/12/02 PHP
imagettftext() 失效,不起作用
2021/03/09 PHP
URI、URL和URN之间的区别与联系
2006/12/20 Javascript
一些易混淆且不常用的属性,希望有用
2007/01/29 Javascript
Tab页界面 用jQuery及Ajax技术实现(php后台)
2011/10/12 Javascript
js实现网页标题栏闪烁提示效果实例分析
2014/11/20 Javascript
jQuery中outerWidth()方法用法实例
2015/01/19 Javascript
jquery实现标题字体变换的滑动门菜单效果
2015/09/07 Javascript
jQuery 3.0中存在问题及解决办法
2016/07/15 Javascript
AngularJS基础 ng-dblclick 指令用法
2016/08/01 Javascript
标准的js无缝滚动效果
2016/08/30 Javascript
基于Bootstrap和jQuery构建前端分页工具实例代码
2016/11/23 Javascript
jquery.validate.js 多个相同name的处理方式
2017/07/10 jQuery
JS点击图片弹出文件选择框并覆盖原图功能的实现代码
2017/08/25 Javascript
JS使用百度地图API自动获取地址和经纬度操作示例
2019/04/16 Javascript
js实现图片上传即时显示效果
2019/09/30 Javascript
JavaScript/TypeScript 实现并发请求控制的示例代码
2021/01/18 Javascript
python使用心得之获得github代码库列表
2014/06/25 Python
Python运算符重载用法实例
2015/05/28 Python
python计算auc指标实例
2017/07/13 Python
Python实现二维数组输出为图片
2018/04/03 Python
flask中的wtforms使用方法
2018/07/21 Python
python机器学习之KNN分类算法
2018/08/29 Python
Pyinstaller 打包exe教程及问题解决
2019/08/16 Python
python列表插入append(), extend(), insert()用法详解
2019/09/14 Python
基于python实现监听Rabbitmq系统日志代码示例
2020/11/28 Python
C#的几个面试问题
2016/05/22 面试题
教师实习自我鉴定
2013/12/13 职场文书
办理居住证介绍信
2014/01/15 职场文书
承诺书怎么写
2014/03/26 职场文书
班子查摆四风个人对照检查材料思想汇报
2014/10/04 职场文书
2014年医德医风工作总结
2014/11/13 职场文书