fetch-api.js
3.58 KB
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
import axios from 'axios';
import {
Toast
} from 'vant';
import router from '@/router'
import {
getToken,
setToken,
} from '@/utils/auth'
// axios的默认url
// axios.defaults.baseURL = ""
// 服务器地址
let base = "http://api.bh.kdao.xin";
if (location.href.indexOf("//k.wxpai.cn") > 0) {
base = "https://api.k.wxpai.cn/bizproxy"
}
// let base = COM.baseUrl;
// 请求拦截器
// axios.interceptors.request.use(
// config => {
// // 每次发送请求之前判断是否存在token,如果存在,则统一在http请求的header都加上token,不用每次请求都手动添加了
// // 即使本地存在token,也有可能token是过期的,所以在响应拦截器中要对返回状态进行判断
// const token = "token"; //这里写入token
// token && (config.headers.Authorization = token);
// return config;
// },
// error => {
// return Promise.error(error);
// })
// 响应拦截器
axios.interceptors.response.use(
response => {
let {
config
} = response;
let {
opt
} = config;
// 服务器状态码
if (response.status === 200) {
// 业务状态码
if (response.data.code === 200) {
return Promise.resolve(response);
} else {
if (typeof (opt.toast) == "undefined" || opt.toast) {
Toast(response.data.errMsg);
}
switch (response.data.code) {
/**
* 登陆失败
* 清除cookies
* 根据业务可能要引导回登陆页
*/
case 403:
removeToken();
break;
default:
break;
}
return Promise.reject(response);
}
} else {
return Promise.reject(response);
}
},
// 服务器状态码不是200的情况
error => {
if (error.response.status) {
switch (error.response.status) {
// 其他错误,直接抛出错误提示
default:
Toast({
message: error.response.data.message,
duration: 1500,
forbidClick: true
});
}
return Promise.reject(error.response);
}
}
);
//formDataHeaders设置
let formDataHeaders = {
headers: {
"Content-Type": "multipart/form-data"
}
}
/**
* 封装get方法
* @param {*} params
*
*/
export const httpGet = params => {
let {
url,
data,
mode,
opt = Object.assign({}, params.opt),
sid = true
} = params;
let reqUrl = `${base}${url}`;
if (mode == "custom") {
reqUrl = `${url}`
}
let headers = {}
if (sid) {
headers.sessionId = getToken();
}
return axios.get(reqUrl, {
params: data
}, {
headers,
opt
}).then(res => res.data);
}
/**
* 封装post方法
* @param {*} params
*/
export const httpPost = params => {
let {
url,
data,
mode,
opt = Object.assign({}, params.opt),
sid = true
} = params;
let reqUrl = `${base}${url}`;
if (mode == "custom") {
reqUrl = `${url}`
}
let headers = {}
if (sid) {
headers.sessionId = getToken();
}
return axios.post(reqUrl, data, {
headers,
opt
}).then(res => res.data);
}
/**
* 封装post方法
* @param {*} params
* data数据是 formdata格式
* 例如:
* this.file = file
let data = new FormData() //使用formData对象
data.append('path', '/pro/mzczcradmin/')
data.append('file', file.file)
*/
export const formdata = params => {
let {
url,
data,
config,
} = params;
if (!config) {
config = {}
}
config.header = formDataHeaders.headers
return axios.post(`${base}${url}`, data, config).then(res => res.data);
}