import axios from 'axios';
import { getToken } from '@/utils/tools'
import appIdConfig from '@/config/appId'
import Toast from '@/components/toast/index'
import store from '@/store/index'
const api = axios.create({
baseURL: process.env.BASE_API,
timeout: 30000,
headers: { 'content-type': 'application/json' }
});
// 请求拦截
api.interceptors.request.use(config => {
config.headers = Object.assign(config.headers, { 'X-ACCESS-TOKEN': store.state.token || '', 'mid': 32, 'lang': sessionStorage.lang || 'zh' })
let store_id = sessionStorage.store_id || '',
lang = sessionStorage.lang
if (!config.params) {
config.params = {}
}
config.params['lang'] = lang
if (store_id) {
config.params['store_id'] = store_id
}
return config;
}, error => {
return Promise.reject(error);
});
// 响应拦截
api.interceptors.response.use(
response => {
if (response.status === 200) {
return Promise.resolve(response.data);
}
// console.log('response',response)
// return Promise.reject(response);
},
(error) => {
// 不提示错误的url 请求
let urls = [
'integral/v1/lottery/activities/start',
'/integral/v1/lottery/activities/',
'/groupBuy/v1/goods/goods/goods-detail',
'/integral/v1/goods/goods/',
'/groupBuy/v1/store/stores',
'/integral/v1/integral/integral/user-integral'
]
let notips = urls.filter((url) => { return error.config.url.includes(url) })
if (error.response.status === 401) {
getToken();
} else {
let errMsg = error.message;
const resData = error.response.data;
if (resData) {
errMsg = (resData.data && resData.data.errorMessage) || resData.errors[0] || resData.message;
}
if (notips.length === 0) {
let ToastOptions = {
content: errMsg,
type: '',
duration: 5000 //所有的提示变为5s
}
Toast.message(ToastOptions)
}
}
return Promise.reject(error.response);
});
export default api;
axios简单二次封装
于 2023-02-05 13:00:09 首次发布