68 lines
1.6 KiB
JavaScript
68 lines
1.6 KiB
JavaScript
import axios from 'axios'
|
|
import config from '@/config'
|
|
import { Toast } from 'vant';
|
|
var toast = null;
|
|
|
|
export default class Http {
|
|
constructor () {
|
|
this.instance = axios.create({
|
|
baseURL: config.checkUrl(),
|
|
timeout: 10000,
|
|
headers: {
|
|
'Content-Type': 'application/json'
|
|
}
|
|
})
|
|
|
|
this.interceptors()
|
|
}
|
|
|
|
async get (params) {
|
|
return await this.instance.get(params.url, {
|
|
params: params.data,
|
|
headers: Object.assign({
|
|
token: localStorage.getItem("token")
|
|
}, params.headers )
|
|
})
|
|
}
|
|
|
|
async post (params) {
|
|
return await this.instance.post(params.url, params.data, {
|
|
headers: Object.assign({
|
|
token: localStorage.getItem("token")
|
|
}, params.headers )
|
|
})
|
|
}
|
|
|
|
interceptors () {
|
|
// 添加请求拦截器
|
|
this.instance.interceptors.request.use(function (config) {
|
|
toast = Toast.loading({
|
|
duration: 0,
|
|
message: '加载中...'
|
|
});
|
|
return config
|
|
}, function (error) {
|
|
// 对请求错误做些什么
|
|
return Promise.reject(error)
|
|
})
|
|
|
|
// 添加响应拦截器
|
|
this.instance.interceptors.response.use(function (response) {
|
|
// 对响应数据做点什么
|
|
toast.clear();
|
|
switch (response.data.status) {
|
|
case 200:
|
|
return response.data.result
|
|
break;
|
|
case 404:
|
|
Toast.fail(response.data.msg);
|
|
throw new Error(response.data.msg)
|
|
break;
|
|
}
|
|
}, function (error) {
|
|
// 对响应错误做点什么
|
|
return Promise.reject(error)
|
|
})
|
|
}
|
|
}
|