| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- /**
- * 封装的axios的工具类
- * 负责请求的公共配置,以及请求拦截,响应拦截,错误处理,网络不佳处理
- */
- import axios from 'axios';
- import { Toast, Dialog } from 'vant';
- import errorCode from '@/utils/errorCode';
- axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8';
- const service = axios.create({
- baseURL: process.env.VUE_APP_BASE_API,
- timeout: 30000,
- withCredentials: true,
- });
- // request拦截器
- service.interceptors.request.use(
- (config) => {
- config.headers['userId'] = localStorage.getItem('loginName');
- return config;
- },
- (error) => {
- Promise.reject(error);
- }
- );
- // 响应拦截器
- service.interceptors.response.use(
- (res) => {
- const code = res.data.code || 200;
- const msg = errorCode[code] || res.data.msg || errorCode['default'];
- if (res.request.responseType === 'blob' || res.request.responseType === 'arraybuffer') {
- return res.data;
- }
- if (code === 401) {
- Toast('认证信息未通过');
- } else if (code === 500) {
- // Toast({
- // message:msg,
- // duration:5000
- // });
- return res.data;
- } else if (code !== 200) {
- Toast({
- message: msg,
- duration: 5000,
- });
- } else {
- return res.data;
- }
- },
- (error) => {
- let { message } = error;
- if (message == 'Network Error') {
- message = '网络异常';
- } else if (message.includes('timeout')) {
- message = '请求超时';
- } else if (message.includes('Request failed with status code')) {
- message = '系统接口' + message.substr(message.length - 3) + '异常';
- }
- Toast(message);
- return Promise.reject(error);
- }
- );
- export default service;
|