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 相关文章推荐
JavaScript 学习笔记(十六) js事件
Feb 01 Javascript
js 遍历对象的属性的代码
Dec 29 Javascript
图片轮换效果实现代码(点击按钮停止执行)
Apr 12 Javascript
解析Javascript中难以理解的11个问题
Dec 09 Javascript
使用angular写一个hello world
Jan 23 Javascript
Hammer.js+轮播原理实现简洁的滑屏功能
Feb 02 Javascript
Javascript实现图片轮播效果(一)让图片跳动起来
Feb 17 Javascript
微信小程序  网络请求API详解
Oct 25 Javascript
javascript正则表达式模糊匹配IP地址功能示例
Jan 06 Javascript
Angular4学习笔记之新建项目的方法
Jul 18 Javascript
实例分析JS中的相等性判断===、 ==和Object.is()
Nov 17 Javascript
小程序实现背景音乐播放和暂停
Jun 19 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
评分9.0以上的动画电影,剧情除了经典还很燃
2020/03/04 日漫
PHP 中文乱码解决办法总结分析
2009/07/30 PHP
PHP数据库万能引擎类adodb配置使用以及实例集锦
2014/06/12 PHP
ThinkPHP打水印及设置水印位置的方法
2016/10/14 PHP
php实现微信公众平台发红包功能
2018/06/14 PHP
PHP封装cURL工具类与应用示例
2019/07/01 PHP
如何制作浮动广告 JavaScript制作浮动广告代码
2012/12/30 Javascript
js和php如何获取当前url的内容
2013/09/22 Javascript
JQuery给网页更换皮肤的方法
2015/05/30 Javascript
javascript作用域链与执行环境详解
2017/03/25 Javascript
Node.js 中使用 async 函数的方法
2017/11/20 Javascript
Vue实现web分页组件详解
2017/11/28 Javascript
浅谈Postman解决token传参的问题
2018/03/31 Javascript
在Vue项目中引入腾讯验证码服务的教程
2018/04/03 Javascript
使用pkg打包Node.js应用的方法步骤
2018/10/19 Javascript
javascript 构建模块化开发过程解析
2019/09/11 Javascript
使用layui定义一个模块并使用的例子
2019/09/14 Javascript
SpringBoot在yml配置文件中配置druid的操作
2020/11/16 Javascript
Django集成百度富文本编辑器uEditor攻略
2014/07/04 Python
Python中几个比较常见的名词解释
2015/07/04 Python
Python实现的最近最少使用算法
2015/07/10 Python
Python判断某个用户对某个文件的权限
2016/10/13 Python
老生常谈Python之装饰器、迭代器和生成器
2017/07/26 Python
Python爬虫抓取代理IP并检验可用性的实例
2018/05/07 Python
python程序变成软件的实操方法
2019/06/24 Python
python绘制雪景图
2019/12/16 Python
python3实现网页版raspberry pi(树莓派)小车控制
2020/02/12 Python
HTML页面中添加Canvas标签示例
2015/01/01 HTML / CSS
捷克钓鱼用品网上商店:Parys.cz
2018/06/15 全球购物
Ruby如何创建一个线程
2013/03/10 面试题
机械设计专业应届生求职信
2013/11/21 职场文书
精彩自我鉴定
2014/01/16 职场文书
安全生产汇报材料
2014/02/17 职场文书
自愿解除劳动合同协议书
2014/09/11 职场文书
经验交流材料格式
2014/12/30 职场文书
幼儿园大班教师个人总结
2015/02/05 职场文书