vue axios post发送复杂对象问题


Posted in Javascript onJune 04, 2019

一、项目情形

现在vue项目中,一般使用axios发送请求去后台拉取数据。

在某些业务场景中,前端需要在某个字段中发送一个复杂的嵌套对象给后台做保存并处理。虽然axios可配置发送方式(post/get等),但如果不做其他配置,post的数据其实也是拼在请求地址后面,而这种传输方式会有很多问题:一是可能数据丢失,二是get传送的数据长度有limit,如果需要保存大段的中文,会报错;三是数据不直观,复杂对象的格式会出现问题。

二、解决方案

怎么实现使用post方法时,能实现formData方式提交,而且整个请求数据格式能像queryString一样直观。

使用QS将数据序列化

//main.js
import axios from 'axios';
Vue.prototype.$axios = axios; // 配置axios的访问方式
//demo.vue
import Qs from qs;
this.$axios({
 method: "post",
 url: "url",
 data: reqData,
 transformRequest: [ function(data){
  return Qs.stringify(data) //使用Qs将请求参数序列化
 }],
 headers: {
  'Content-Type': 'application/x-www-form-urlencoded' //必须设置传输方式
 }
}).then((res)=>{
 //逻辑代码
}

完成第一步后,可以实现post请求了,请求体为formData的格式,但如果reqData是一个对象嵌套数组的复杂对象,form的格式会变得非常不直观。如果此时后台需要将对象整个储存起来,以便下次拉取数据渲染前端页面,则会增加很多额外的转化工作。

//例如obj为一个嵌套多层的复杂对象
let reqData = {
 id: '123',
 status: '1',
 data: {
  innerData: {
   price: "higher",
   amount: "2000",
  },
  outerData: {
   price: "lower",
   amount: "3000"!
  },
  parts: ['123','234','345','456']
 }
}
//参考如上配置,最后请求体中parsed的数据格式会变成如下
![图片描述][1]

对象跟数组的每一项都被拆拼成键值对,数据格式非常不直观,如果后台需要将整个数据保存以便下次取用,会不方便。

可以怎样简单处理一下,让它变得像如下图一的get方法一样参数清晰呢?

vue axios post发送复杂对象问题

只需做一个简单的处理,将复杂对象对象变成字符串,再进行传输。

let data = {
  innerData: {
   price: "higher",
   amount: "2000",
  },
  outerData: {
   price: "lower",
   amount: "3000"!
  },
  parts: ['123','234','345','456']
 },
 reqData = {
  id: '123',
  status: '1',
  data: **JSON.stringify(data)**
 };
this.$axios({
 method: "post",
 url: "url",
 data: reqData,
 transformRequest: [ function(data){
  return Qs.stringify(data) //使用Qs将请求参数序列化
 }],
 headers: {
  'Content-Type': 'application/x-www-form-urlencoded' //必须设置传输方式
 }
}).then((res)=>{
 //逻辑代码
}

这样之后,数据格式变得清晰可读,而且后台可以根据key值直接取出整个对象。我们也可以大方优雅地用vue axios进行post传输啦。

vue axios post发送复杂对象问题

总结

以上所述是小编给大家介绍的vue axios post发送复杂对象问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
JS回调函数的应用简单实例
Sep 17 Javascript
jQuery的Scrollify插件实现滑动到页面下一节点
Jul 05 Javascript
使用jQuery Ajax 请求webservice来实现更简练的Ajax
Aug 04 Javascript
详解angular2封装material2对话框组件
Mar 03 Javascript
JavaScript 上传文件(psd,压缩包等),图片,视频的实现方法
Jun 19 Javascript
js监听html页面的上下滚动事件方法
Sep 11 Javascript
详解微信小程序与内嵌网页交互实现支付功能
Oct 22 Javascript
vue-lazyload使用总结(推荐)
Nov 01 Javascript
详解Vue项目部署遇到的问题及解决方案
Jan 11 Javascript
vue中keep-alive组件的入门使用教程
Jun 06 Javascript
微信公众号生成新浪短网址的实现(快速生成)
Aug 18 Javascript
Node使用Selenium进行前端自动化操作的代码实现
Oct 10 Javascript
vue 2.5.1 源码学习 之Vue.extend 和 data的合并策略
Jun 04 #Javascript
vue实现分环境打包步骤(给不同的环境配置相对应的打包命令)
Jun 04 #Javascript
JavaScript实现页面中录音功能的方法
Jun 04 #Javascript
vue elementUI 表单校验功能之数组多层嵌套
Jun 04 #Javascript
小程序根据手机机型设置自定义底部导航距离
Jun 04 #Javascript
js回文数的4种判断方法示例
Jun 04 #Javascript
Vue对象赋值视图不更新问题及解决方法
Jun 03 #Javascript
You might like
yii2 resetful 授权验证详解
2017/05/18 PHP
PHP+Apache实现二级域名之间共享cookie的方法
2019/07/24 PHP
laravel ORM关联关系中的 with和whereHas用法
2019/10/16 PHP
js解析json读取List中的实体对象示例
2014/03/11 Javascript
JavaScript Math.ceil 方法(对数值向上取整)
2015/01/09 Javascript
jQuery Easyui 验证两次密码输入是否相等
2016/05/13 Javascript
Javascript删除指定元素节点的方法
2016/06/21 Javascript
JavaScript直播评论发弹幕切图功能点集合效果代码
2016/06/26 Javascript
Javascript实现一个简单的输入关键字添加标签效果实例
2017/06/01 Javascript
微信小程序列表渲染功能之列表下拉刷新及上拉加载的实现方法分析
2017/11/27 Javascript
在vue组件中使用axios的方法
2018/03/16 Javascript
浅谈Vue下使用百度地图的简易方法
2018/03/23 Javascript
vue实现城市列表选择功能
2018/07/16 Javascript
JavaScript的Proxy可以做哪些有意思的事儿
2019/06/15 Javascript
layui异步加载table表中某一列数据的例子
2019/09/16 Javascript
理解JavaScript中的对象
2020/08/25 Javascript
[34:56]Ti4冒泡赛LGD vs Liquid 1
2014/07/14 DOTA
python中使用sys模板和logging模块获取行号和函数名的方法
2014/04/15 Python
基于python的Tkinter实现一个简易计算器
2015/12/31 Python
Python第三方库的安装方法总结
2016/06/06 Python
获取python文件扩展名和文件名方法
2018/02/02 Python
利用Python代码实现数据可视化的5种方法详解
2018/03/25 Python
Python supervisor强大的进程管理工具的使用
2019/04/24 Python
Python多线程:主线程等待所有子线程结束代码
2020/04/25 Python
罗德与泰勒百货官网:Lord & Taylor
2016/08/12 全球购物
领先的钻石和订婚戒指零售商:Diamonds-USA
2016/12/11 全球购物
证券期货行业个人的自我评价
2013/12/26 职场文书
父亲生日宴会答谢词
2014/01/10 职场文书
小学毕业感言50字
2014/02/16 职场文书
小学生优秀评语大全
2014/04/22 职场文书
有子女的离婚协议书怎么写(范本)
2014/09/29 职场文书
2014年民警工作总结
2014/11/25 职场文书
离婚案件答辩状
2015/05/22 职场文书
班组长如何制订适合本班组的工作计划?
2019/07/10 职场文书
Python数据处理的三个实用技巧分享
2022/04/01 Python
Redis特殊数据类型HyperLogLog基数统计算法讲解
2022/06/01 Redis