123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- // 请求
- import axios from 'axios';
- import $store from '@/sheep/store';
- import $storage from '@/sheep/utils/storage';
- import { ElMessage, ElMessageBox } from 'element-plus';
- import { isNil } from 'lodash';
- import { baseURL } from '@/sheep/config';
- const options = {
- // 显示操作成功消息 默认不显示
- showSuccessMessage: false,
- // 显示失败消息 默认显示
- showErrorMessage: true,
- // 显示请求Loading 默认不显示
- showLoading: false,
- // ...
- };
- /**
- * @description axios请求基础配置 可直接使用访问自定义请求
- */
- export const request = axios.create({
- baseURL,
- timeout: 8000,
- method: 'GET',
- headers: {
- // "Accept": "*/*",
- 'Content-Type': 'application/json;charset=UTF-8',
- },
- options,
- });
- /**
- * @description axios请求拦截器
- */
- request.interceptors.request.use(
- (config) => {
- $store('app').setRequestCounter(1);
- // 测试token
- const token = `Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0eXBlIjoiYWRtaW4iLCJ1aWQiOjEsImF1ZCI6IiIsImV4cCI6MTc1MTk0NDQ3MiwiaWF0IjoxNzUxODU4MDcyLCJpc3MiOiIiLCJqdGkiOiI2YTIxMzk4NzYzOTliYzY5NTViY2Y5ZTcxOGQ5ODZjYyIsIm5iZiI6MTc1MTg1ODA3Miwic3ViIjoiIn0.-1wdpM_1uZq33YpaDUamtF-MY4c5FhZOItMp5CUTPvg`;
- // const token = $storage.get('token');
- if (token) config.headers['Authorization'] = token;
- return config;
- },
- (error) => {
- $store('app').setRequestCounter(-1);
- return Promise.reject(error);
- },
- );
- /**
- * @description axios响应拦截器
- */
- request.interceptors.response.use(
- (response) => {
- $store('app').setRequestCounter(-1);
- // 自动刷新令牌
- if (response.headers.authorization) {
- $store('account').setToken(response.headers.authorization);
- }
- // 导出&下载文件
- if (response.config.responseType === 'blob' && response.data.size > 0) {
- return Promise.resolve(response);
- }
- if (response.data.code !== '200') {
- if (response.config.options.showErrorMessage)
- ElMessage.error(response.data.msg || '操作失败');
- } else {
- response.config.options.showSuccessMessage &&
- ElMessage.success(response.data.msg || '操作成功');
- }
- return Promise.resolve(response.data);
- },
- (error) => {
- $store('app').setRequestCounter(-1);
- let errorMessage = '未知错误';
- if (!isNil(error.response)) {
- switch (error.response?.status) {
- case 400:
- errorMessage = '请求错误';
- break;
- case 401:
- errorMessage = '未授权,请重新登录';
- if (document.getElementsByClassName('el-message-box').length === 0) {
- ElMessageBox.alert(error.response.data.msg || errorMessage, '认证失败', {
- confirmButtonText: '重新登陆',
- }).then(() => {
- $store('account').logout(true);
- });
- }
- return Promise.reject(error.response);
- break;
- case 403:
- errorMessage = '拒绝访问';
- break;
- case 404:
- errorMessage = '请求出错';
- break;
- case 408:
- errorMessage = '请求超时';
- break;
- case 429:
- errorMessage = '请求频繁, 请稍后再访问';
- break;
- case 500:
- errorMessage = '服务器开小差了,请稍后再试~';
- break;
- case 501:
- errorMessage = '服务未实现';
- break;
- case 502:
- errorMessage = '网络错误';
- break;
- case 503:
- errorMessage = '服务不可用';
- break;
- case 504:
- errorMessage = '网络超时';
- break;
- case 505:
- errorMessage = 'HTTP版本不受支持';
- break;
- }
- ElMessage.error(error.response.data.msg || errorMessage);
- } else {
- ElMessage.error(errorMessage);
- }
- return false;
- },
- );
|