axios在vue中的简单配置与使用
2017.03.12
hzzly
尤雨溪之前在微博发布消息,不再继续维护vue-resource,并推荐大家开始使用 axios 。
一、axios 简介
axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端,它本身具有以下特征:
- 从浏览器中创建 XMLHttpRequest
- 从 node.js 发出 http 请求
- 支持 Promise API
- 拦截请求和响应
- 转换请求和响应数据
- 取消请求
- 自动转换JSON数据
- 客户端支持防止 CSRF/XSRF
二、引入方式:
npm:
1 2 3
| $ npm install axios //淘宝源 $ cnpm install axios
|
bower:
cdn:
1
| <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
|
**三、vue中axios的配置 **
之前那个开源项目一开始就打算用axios,在网上找了好多文章与攻略,发现好多都不太详细,所以打算自己动手配置一个,(不要怂,撸起袖子就是干)。
我的配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| import axios from 'axios' import qs from 'qs' import * as _ from '../util/tool' axios.defaults.timeout = 5000; axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8'; axios.defaults.baseURL = '你的接口地址';
axios.interceptors.request.use((config) => { if(config.method === 'post'){ config.data = qs.stringify(config.data); } return config; },(error) =>{ _.toast("错误的传参", 'fail'); return Promise.reject(error); });
axios.interceptors.response.use((res) =>{ if(!res.data.success){ return Promise.reject(res); } return res; }, (error) => { _.toast("网络异常", 'fail'); return Promise.reject(error); });
export function fetchPost(url, params) { return new Promise((resolve, reject) => { axios.post(url, params) .then(response => { resolve(response.data); }, err => { reject(err); }) .catch((error) => { reject(error) }) }) }
export function fetchGet(url, param) { return new Promise((resolve, reject) => { axios.get(url, {params: param}) .then(response => { resolve(response.data) }, err => { reject(err) }) .catch((error) => { reject(error) }) }) }
|
四、vue中使用配置好的axios
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| export default {
Login(params) { return fetchPost('/users/api/userLogin', params) },
Regist(params) { return fetchPost('/users/api/userRegist', params) },
RegistVerifiCode(tellphone) { return fetchPost('/users/api/registVerifiCode', {tellphone: tellphone}) }, ...... }
|
如果觉得还行,欢迎star
项目地址: https://github.com/hzzly/xyy-vue
demo地址: http://hjingren.cn/xyy-vue/
好了,溜了溜了。。。