Files
ClassContent/历届学生/fontendseven/项目练习/上课项目/vuecli2-tpl/src/http/index.js
2024-09-27 02:06:13 +08:00

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)
})
}
}