vue(axios)封装,content-type由application/json转换为application/x-www-form-urlencoded
现在主流的http请求头的content-type有三种(不讨论xml):
application/x-www-form-urlencoded 最常见的提交数据方式,与原生form表单数据一致,在chrome调试工具中的表现形式为formdata
multipart/form-data 上传文件时的content-type类型
application/json 越发流行的提交数据方式,告诉服务端消息主题是序列化后json字符串,在chrome调试工具中的表现形式为payload。
axios默认的Content-type是application/json,但是我们的后端竟然告诉我不能接收这种数据,如果改动会对原来的某些业务有影响???(后来传复杂数据还是改了,但是这个工作我已经做了)
那么我要做的是将编码方式转为application/x-www-form-urlencoded,即传输方式payload => form data ;
其实很简单,就是在请求头设置content-type,所以有了以下封装:
import axios from 'axios';
import qs from 'qs'; function api(method,url,params){
let param = {};
// 权限认证的一环,在每个请求中加入身份令牌token
if(params){
if(sessionStorage.getItem('token')){
params.token = sessionStorage.getItem('token');
}
// 此处用到qs.stringify(),作用是将参数序列化为url形式(a=1&b=2) 注意与JSON.stringify()的区别
param = qs.stringify(params);
}else{
if(sessionStorage.getItem('token')){
param.token = sessionStorage.getItem('token');
}
}
const Axios = axios({
baseURL:'/',//设置有代理
url:url,
timeout:10000,
method:method,
data:method==='POST'||method==="PUT"?param:null,
params:method==='GET'||method==="DELETE"?param:null,
headers:{
"Content-Type":"application/x-www-form-urlencoded;charset-utf-8"
}
})
return Axios;
} export default{
get(url,params){
return api('GET',url,params);
},
post(url,params){
return api('POST',url,params);
},
put(url,params){
return api('PUT',url,params);
},
delete(url,params){
return api('DELETE',url,params);
}
}
再在main.js添加代码
import api from './api';//我在src根目录建了个api文件夹,引用会自动查找文件下的index
Vue.prototype.$api = api;
用法与正常使用axios没有任何区别:
this.$api.post(url,params).then(res=>{
//处理代码
})
vue(axios)封装,content-type由application/json转换为application/x-www-form-urlencoded的更多相关文章
- multipart/form-data,application/json和application/x-www-form-urlencoded区别
application/json和application/x-www-form-urlencoded都是表单数据发送时的编码类型. EncType: enctype 属性规定在发送到服务器之前应该如何 ...
- application/json和application/x-www-form-urlencoded区别
application/json和application/x-www-form-urlencoded都是表单数据发送时的编码类型. EncType: enctype 属性规定在发送到服务器之前应该如何 ...
- vue axios 封装(二)
封装二: http.js import axios from 'axios' import storeHelper from './localstorageHelper' // 全局设置 const ...
- Vue axios封装 实现请求响应拦截
封装 axios.js import axios from 'axios' import { baseURL } from '@/config' class HttpRequest { constru ...
- vue axios封装以及登录token过期跳转问题
Axios配置JWT/封装插件/发送表单数据 首先请务必已仔细阅读 Axios 文档并熟悉 JWT: 中文文档 JWT 中文文档 安装 npm install axios npm install es ...
- 在同一个项目中灵活运用application/json 和application/x-www-form-urlencoded 两种传输格式(配合axios,同时配置loading)
'use strict' import axios from 'axios' // import qs from 'qs' import { Notification} from 'element-u ...
- application/json和application/x-www-form-urlencoded使用选择
一.参考资料 选application/x-www-form-urlencoded还是application/json? @RequestBody应用 二.理解 1.@RequestBody的作用 注 ...
- 使用axios发送post请求,将JSON数据改为为form类型
我的github(PS:希望star):https://github.com/thWinterSun/v-admin 通常前端通过POST请求向服务器端提交数据格式有4中,分别是"appli ...
- application/json 与 application/x-www-form-urlencoded的简单比较
application/x-www-form-urlencoded 提交请求示例 curl -X POST 'http://localhost:8080/formPost' -d 'id=1& ...
随机推荐
- css技巧——垂直居中
1.父元素确定的单行垂直居中 通过设置父元素的 height 和 line-height 高度一致来实现的. 2.父元素确定的多行垂直居中 父元素高度确定的多行文本.图片.块状元素的竖直居中的方法有两 ...
- jQuery show hide方法 二级菜单
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Spring Security 4 使用@PreAuthorize,@PostAuthorize, @Secured, EL实现方法安全
[相关已翻译的本系列其他文章,点击分类里面的spring security 4] 上一篇:Spring Security 4 整合Hibernate 实现持久化登录验证(带源码) 原文地址:http: ...
- CSS+div总结 标签: css 2016-01-17 11:35 926人阅读 评论(31) 收藏
根据学习计划,将视频进行了学习,之前就知道css是基础,然后一致认为既然是基础,应该比较简陋吧,结果经过学习才发现,css的效果也是很炫的啊,然后学习完了视频,自己又找了一些教程.下面就简单介绍一下我 ...
- 洛谷 3174 [HAOI2009]毛毛虫
题目描述 对于一棵树,我们可以将某条链和与该链相连的边抽出来,看上去就象成一个毛毛虫,点数越多,毛毛虫就越大.例如下图左边的树(图 1 )抽出一部分就变成了右边的一个毛毛虫了(图 2 ). 输入输出格 ...
- mysql 开篇
Mysql 教程 mysql是最流行的关系型数据库管理系统,在wab应用方面mysql是最好的RDBMS(Relational Database Manangement System: 关系数据库管理 ...
- HZOJ 随
这个题的题解并不想写……一个写的很详细的blog 第1个测试点:mod=2,a[i]<mod(仔细看题),则n个数字都是1,直接输出1即可. 第2个测试点:每次乘上去的数字只有一种选择,快速幂即 ...
- TOP10!全球顶级云计算公司战斗力排行榜
TOP10!全球顶级云计算公司战斗力排行榜 1亚马逊\VMware.微软 [PConline 资讯]现如今,不谈“云”,似乎会与这个时代格格不入.无论是企业还是个人,都会与“云”扯上关系.可以说,云计 ...
- 2018-8-10-UWP-WPF-解决-xaml-设计显示异常
title author date CreateTime categories UWP WPF 解决 xaml 设计显示异常 lindexi 2018-08-10 19:16:53 +0800 201 ...
- 如何用JS和HTML 做一个桌面炒股小插件【原创】
首先,使用node-webkit 做环境,废话不多说,直接贴HTML <!DOCTYPE html> <html xmlns="http://www.w3.org/1999 ...