axios是vue官方推荐的http库,详情见官方中文文档。vue
npm install axios
安装依赖:ios
npm install --save axios vue-axios
配置模板:git
//main.js中 import Vue from 'vue' import axios from 'axios' import VueAxios from 'vue-axios' Vue.use(VueAxios, axios) //而后你就能愉快地使用axios啦
若是不想这样安装,也能够快速引用它:github
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
有好几种方法,get post delete put patch 什么的,不过我一般就用get和post两种,因此我就记录这种中的使用方法了。npm
let data = { //要传的参数 'loginName':'123456', 'passWord':'123456', 'updateSign':'52af3ce8a82f62707789fe00899ed3f0', 'isLogin':'1' } //post请求 this.axios.post('/api/user/sickUserLogin/3',data) .then((response) { console.log(response); }) .catch(function (error) { console.log(error); }); //get请求 this.axios.get('/api/user/sickUserLogin/3',{params:data}) .then((response) => { console.log(response.data); console.log(response); }) .catch(function (error) { console.log(error); });
这里要注意一点的是:get和post请求的传参方式是不同的,缘由能够参考这里json
axios.get('url', {params: data}); axios.post('url', data); //get请求的参数是拼接url字符串传递的; //post请求的参数是经过data请求主体传递的;
参数格式:axios
axios的默认参数格式是json字符串,传参方式就像上面那个demo同样便可。可是若是你想以key:value的方式传参,则须要作一点改变:参考这里
注意:若是你的请求方法是post,又规定了参数格式是application/x-www-form-urlencoded,则必需要使用下面这些方法中的一种。(我在写demo的时候测试了一下,post方法下json传参格式是失败的,必需要改为键值对的格式,不然会报错)
主要推荐这种写法:api
var qs = require('qs'); axios.post('/foo', qs.stringify({ 'bar': 123 }));
这个方法须要先安装一下qs:跨域
npm install qs import qs from 'qs' Vue.prototype.qs = qs; //全局定义,使用的时候用this.qs.stringify(data)便可
还有另外一种写法浅显易懂:app
var params = new URLSearchParams(); //这种写法不须要引入qs params.append('collectId',"16"); //你要传给后台的参数值 key/value params.append('collectTye',"2"); params.append('isCancel',"2",); this.$axios({ method: 'post', url:url, data: params }).then((res)=>{ })
设置axios的baseURL:
//在main.js中: axios.defaults.baseURL = 'http://api.eeesys.com:18087/'; //这些具体的写法能够多看几遍文档,就懂了,我也不是很懂 //根据个人测验,这样写了以后,请求会忽略掉proxyTable中的配置,直接请求这个地址,这样在生产环境下就能够跨域了,不知道是否是这样的
从新定义一个axios实例:
const $axios = axios.create({ baseURL: 'http://api.eeesys.com:18087/', timeout: 5000, headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }); // 初始化默认post header,这里规定了post请求的传参格式是application/x-www-form-urlencoded //若是不这样写,后台接收到的参数是null $axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'; Vue.prototype.$axios = $axios;
这样就能够在代码中使用本身定义的axios实例,没有配置的属性会继承lib/defaults.js文件中的设置