123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- import axios from "axios";
- import { ElLoading, ElMessage } from "element-plus";
- import router from "@/router";
- let token = (localStorage && localStorage.getItem('token')) || 'eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxNTkxNTgxNjA0MSIsImxvZ2luVHlwZSI6InVzZXIiLCJ1c2VyTmFtZSI6IjE1OTE1ODE2MDQxIiwiaWF0IjoxNjgxODAzNzY1LCJqdGkiOiJhMDU4M2EwZS01M2EzLTQ1YTUtOTI1ZS1kZDgzYzU5Y2Y5MGMifQ.bdu5jqbSxSlo9LH4w_uPEuP67DUJk6w5Yqnu633OtQI'
- // request是一个axios实例,每一个实例你都可以单独定制它的baseURL,超时时间,请求头和一些其他配置项。
- const baseUrl = import.meta.env.VITE_BASE_URL; //接口统一域名
- const instance = axios.create({
- baseURL: baseUrl,
- timeout: 60 * 1000, //设置超时
- headers: {
- "Content-Type": "application/json;charset=UTF-8;",
- "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",
- ".AspNetCore.Culture": "c=zh-Hans|uic=zh-Hans",
- token:token,
- },
- });
- let loading;
- //正在请求的数量
- let requestCount = 0;
- //显示loading
- const showLoading = () => {
- if (requestCount === 0) {
- loading = ElLoading.service({
- fullscreen: true,
- text: "Loading ",
- background: "rgba(0, 0, 0, 0.7)",
- });
- }
- requestCount++;
- };
- //隐藏loading
- const hideLoading = () => {
- requestCount--;
- if (requestCount == 0) {
- loading.close();
- }
- };
- //请求拦截器
- instance.interceptors.request.use(
- (config) => {
- console.log('config',config.loading,'if',config.loading != true)
- if(!config.loading){
- showLoading();
- }
- // 每次发送请求之前判断是否存在token,如果存在,则统一在http请求的header都加上token,不用每次请求都手动添加了
- //若请求方式为post,则将data参数转为JSON字符串
- if (config.method === "POST") {
- config.data = JSON.stringify(config.data);
- }
- return config;
- },
- (error) =>
- // 对请求错误做些什么
- Promise.reject(error)
- );
- //响应拦截器
- instance.interceptors.response.use(
- (response) => {
- hideLoading();
- if (response.data.code !== 200) {
- ElMessage.error(response.data.message);
- return Promise.reject(response.data)
- // router.push("/");
- }
- else return response.data?.data;
- },
- (error) => {
- hideLoading();
- //响应错误
- let message = "";
- if (error.response && error.response.status) {
- const status = error.response.status;
- console.log('Error',error.response)
- switch (status) {
- case 400:
- message = "请求错误";
- break;
- case 401:
- message = "请求错误";
- break;
- case 404:
- message = "请求地址出错";
- break;
- case 408:
- message = "请求超时";
- break;
- case 500:
- message = "服务器内部错误!";
- break;
- case 501:
- message = "服务未实现!";
- break;
- case 502:
- message = "网关错误!";
- break;
- case 503:
- message = "服务不可用!";
- break;
- case 504:
- message = "网关超时!";
- break;
- case 505:
- message = "HTTP版本不受支持";
- break;
- default:
- message = "请求失败";
- }
- ElMessage.error(message);
- return Promise.reject(error);
- }
- return Promise.reject(error);
- }
- );
- export default instance;
|