现在主流的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的更多相关文章

  1. multipart/form-data,application/json和application/x-www-form-urlencoded区别

    application/json和application/x-www-form-urlencoded都是表单数据发送时的编码类型. EncType: enctype 属性规定在发送到服务器之前应该如何 ...

  2. application/json和application/x-www-form-urlencoded区别

    application/json和application/x-www-form-urlencoded都是表单数据发送时的编码类型. EncType: enctype 属性规定在发送到服务器之前应该如何 ...

  3. vue axios 封装(二)

    封装二: http.js import axios from 'axios' import storeHelper from './localstorageHelper' // 全局设置 const ...

  4. Vue axios封装 实现请求响应拦截

    封装 axios.js import axios from 'axios' import { baseURL } from '@/config' class HttpRequest { constru ...

  5. vue axios封装以及登录token过期跳转问题

    Axios配置JWT/封装插件/发送表单数据 首先请务必已仔细阅读 Axios 文档并熟悉 JWT: 中文文档 JWT 中文文档 安装 npm install axios npm install es ...

  6. 在同一个项目中灵活运用application/json 和application/x-www-form-urlencoded 两种传输格式(配合axios,同时配置loading)

    'use strict' import axios from 'axios' // import qs from 'qs' import { Notification} from 'element-u ...

  7. application/json和application/x-www-form-urlencoded使用选择

    一.参考资料 选application/x-www-form-urlencoded还是application/json? @RequestBody应用 二.理解 1.@RequestBody的作用 注 ...

  8. 使用axios发送post请求,将JSON数据改为为form类型

    我的github(PS:希望star):https://github.com/thWinterSun/v-admin 通常前端通过POST请求向服务器端提交数据格式有4中,分别是"appli ...

  9. application/json 与 application/x-www-form-urlencoded的简单比较

    application/x-www-form-urlencoded 提交请求示例 curl -X POST 'http://localhost:8080/formPost' -d 'id=1& ...

随机推荐

  1. *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '[<_UIFeedbackParameters 0x1d4442e50> setNilValueForKey]: could not set nil as the value for the key rate.'

    *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '[<_UIFeedbac ...

  2. Java练习 SDUT-2746_大小写转换

    大小写转换 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description X现在要学习英文以及各种稀奇古怪的字符的了.现在他想把一串字 ...

  3. JavaScript原型链中toString()方法输出alert()和console.log()得到不同的结果

    <script language="javascript"> function myObj(){ var total = 0; } myObj.prototype.ad ...

  4. oracle函数 UPPER(c1)

    [功能]将字符串全部转为大写 [参数]c1,字符表达式 [返回]字符型 [示例] SQL> select upper('AaBbCcDd') upper from dual; UPPER --- ...

  5. HZOI 可怜与超市

    网上搜不着,八成又是哪个学长留下的…… 因为考试第二题我们都好不容易才搞懂,学长有给我们扔了几道类似的题. 其实这道题思路挺好想的,就是一些细节还有复杂度比较难弄,好难调啊. 看到题的第一眼以为是树形 ...

  6. jasperReports 通过java导出各种格式报表,及javaweb项目整合显示各种报表

    注意:编写此项目时,请先手动编写**.jrxml  或者用IReport生成**.jrxml或**.jasper 注:java导出报表与web项目显示报表方法其实是相同的,只不过有一句代码不同,如下 ...

  7. 【CSS3】使用CSS3制作全屏切换效果

    在线演示: DEMO DEMO中及以下代码并没有写兼容代码,请使用高级浏览器打开,IE版本对CSS3支持并不太友好,IE11打开没有滚屏效果. 兼容代码前缀: -webkit- -moz- -o- - ...

  8. C#循环语句练习(三)

    for循环拥有两类:一.穷举:把所有可能的情况都走一遍,使用if条件筛选出来满足条件的情况. (1).羽毛球拍15元,球3元,水2元.200元每种至少一个,有多少可能. (2).百鸡百钱:公鸡2文钱一 ...

  9. Python--day63--添加书籍和修改表结构的注意事项

  10. 2018-8-10-UWP-分享用那个图标

    title author date CreateTime categories UWP 分享用那个图标 lindexi 2018-08-10 19:16:52 +0800 2018-2-13 17:2 ...