vue HTTP 封装

axios)

为何选用 axios 做 http 请求

  • 尤大大推荐
  • 够简单易上手,http 功能全,适合我们业务逻辑
  • 浏览器兼容不错

封装 axios

  1. 编写 httpService
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
// 导入依赖
import axios from 'axios';
import qs from 'qs';
// 创建axios对象
var instance = axios.create({
baseURL: SYSTEM.BASE_URL,
method: 'get',
timeout: SYSTEM.TIMEOUT,
// 请求头封装
headers: {
'X-Requested-With': 'XMLHttpRequest',
'Content-Type': 'application/x-www-form-urlencoded'
}
});
// request拦截器
instance.interceptors.request.use(function (config) {
config.url = config.url + (config.prefix ? config.prefix : SYSTEM.SUFFIX_URL);
if (config.method == 'get') {
config.params = config.data;
}
// 上传功能
if (config.upload) {
config.data = config.data;
} else {
// 参数序列化
config.data = qs.stringify(config.data);
}
return config;
}, function (error) {
return Promise.reject(error);
});
// response拦截器
instance.interceptors.response.use(function (response) {
if (!response.data.respCode) {
return response.data;
} else {
return Promise.reject(new Error(...);
}
}, function (error) {
return Promise.reject(error);
})
export default {
install: function (Vue, Option) {
Object.defineProperty(Vue.prototype, "$http", {
value: instance
});
}
};
export const $http = instance;
  1. Vue 插件方式注入
1
2
3
...
Vue.use(httpService);
...
  1. 使用
1
2
3
4
5
6
7
8
9
10
11
import {
$http
} from './httpService';

$http.request({
method: 'post',
url: API.trade_order,
data: {
tradeId: 111
}
})
【长按关注】看看↓↓↓?
Eminoda wechat
【前端雨爸】分享前端技术实践,持续输出前端技术文章
欢迎留言,评论交流,一起讨论前端问题
📢 因为是开源博客,为避免 Gitalk授权 带来的 安全风险,也可访问