axios 使用 class 封装下
安装 axios
- doc
npm install axios -S
封装
- axios.js
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
65
66
67
68
69
70// 封装 axios 的请求,返回重新封装的数据格式
// 对错误的统一处理
import axios from 'axios'
import errorHandle from './errorHandle'
class HttpRequest {
constructor(baseUrl) {
this.baseURL = baseUrl
}
// 获取 axios 配置
getInsideConfig() {
const config = {
baseURL: this.baseURL,
headers: {
'Content-Type': 'application/json;charset=utf-8'
},
// 跨域请求的时候是否把本地 cookie 带上
withCredentials: false, // default
timeout: 10000
}
return config
}
// 设定拦截器
interceptors(instance) {
// 请求拦截器
instance.interceptors.request.use(function (config) {
return config;
}, function (error) {
errorHandle(error)
return Promise.reject(error);
});
// 响应请求的拦截器
instance.interceptors.response.use(function (response) {
if (response.status === 200) {
return Promise.resolve(response.data)
} else {
return Promise.reject(response)
}
// return response;
}, function (error) {
errorHandle(error)
return Promise.reject(error);
});
}
// 创建实例
request(options) {
const instance = axios.create()
const newOptions = Object.assign(this.getInsideConfig(), options)
this.interceptors(instance)
return instance(newOptions)
}
get(url, config = {}) {
const options = Object.assign({
method: 'get',
url: url
}, config)
return this.request(options)
}
post(url, data = {}) {
return this.request({
method: 'post',
url: url,
data: data
})
}
}
export default HttpRequest - request.js
1
2
3
4
5import HttpRequest from './axios'
import config from '@/config'
const baseURL=process.env.NODE_ENV === 'development' ? config.baseUrl.dev : config.baseURL.pro
const axios = new HttpRequest(baseURL)
export default axios - errorHandle.js
1
2
3
4
5const errorHandle = (err) => {
console.log(err)
}
export default errorHandle
使用
1 | import axios from '@/utils/request'; |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 BARAN的小站🔥🔥🔥!