12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- import axios, { AxiosResponse, InternalAxiosRequestConfig } from 'axios';
- import utils from '@/utils/index';
- import router from '@/router'
- axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8';
- axios.defaults.headers['auth'] = true;
- // 创建 axios 实例
- const service = axios.create({
- baseURL: import.meta.env.VITE_APP_BASE_API,
- timeout: 5000
- });
- // 请求拦截器
- service.interceptors.request.use(
- (config: InternalAxiosRequestConfig) => {
- //console.log("config", config)
- const token = localStorage.getItem("token") || "";
- if (token && Boolean(config.headers['auth']) == true) {
- config.headers['Authorization'] = token;
- }
- if (!token && Boolean(config.headers['auth']) == true) {
- delete config.headers['auth']
- const message = "缺少凭证,请重新登录!";
- if (router.currentRoute.value.path != "/login") {
- router.push("/login");
- }
- ElMessage({ message: message, type: 'error', duration: 5 * 1000 });
- return Promise.reject(message);
- }
- // get请求修改Content-Type
- if (config.method?.toLowerCase() === 'get') {
- config.headers['Content-Type'] = 'application/x-www-form-urlencoded';
- }
- // get请求映射params参数
- if (config.method === 'get' && config.data) {
- let url = config.url + '?' + utils.tansParams(config.data);
- url = url.slice(0, -1);
- config.data = {};
- config.url = url;
- }
- // FormData数据去请求头Content-Type
- if (config.data instanceof FormData) {
- delete config.headers['Content-Type'];
- }
- delete config.headers['auth']
- return config;
- },
- (error: any) => {
- //console.log(error);
- return Promise.reject(error);
- }
- );
- // 响应拦截器
- service.interceptors.response.use(
- (res: AxiosResponse) => {
- const code = res.data.code;
- const message = res.data.message;
- if (code === 401) {
- router.push("/login");
- ElMessage({ message: message, type: 'error', duration: 5 * 1000 });
- return Promise.reject('凭证已过期,请重新登录!');
- } else {
- return Promise.resolve(res.data);
- }
- },
- (error: any) => {
- let { message, response } = error;
- if (message == 'Network Error') {
- message = '网络异常';
- } else if (message.includes('timeout')) {
- message = '请求超时';
- } else if (message.includes('Request failed with status code')) {
- if (response.data.status) {
- message = response.data.message;
- } else {
- message = '系统接口' + message.substr(message.length - 3) + '异常';
- }
- }
- ElMessage({ message: message, type: 'error', duration: 5 * 1000 });
- return Promise.reject(error);
- }
- );
- export default service;
|