import axios, { AxiosInstance, AxiosError, AxiosRequestConfig, AxiosResponse } from 'axios' import { ElMessage } from "element-plus"; import { useUserStore } from "@/store/modules/user" // 创建axios实例 进行基本参数配置 const service = axios.create({ // 默认请求地址,根据环境的不同可在.env 文件中进行修改 // baseURL: import.meta.env.VUE_APP_BASE_ // 本地地址 baseURL: "http://127.0.0.1:8001/api", // baseURL: "http://119.91.156.147:1007/api", // 华为云地址 // baseURL: "http://119.3.32.162:666/api", // 测试服地址 //baseURL: "http://129.204.254.216:888/api", // 好游快暴服地址 //baseURL: "http://42.194.162.4:1001/api", // 设置接口访问超时时间 timeout: 3000000, // request timeout, // 跨域时候允许携带凭证 // withCredentials: true }) // request interceptor 接口请求拦截 service.interceptors.request.use((config: AxiosRequestConfig) => { /** * 用户登录之后获取服务端返回的token,后面每次请求都在请求头中带上token进行JWT校验 * token 存储在本地储存中(storage)、vuex、pinia */ const userStore = useUserStore(); const token: string = userStore.token; // 自定义请求头 if (token) { config.headers['Authorization'] = token } return config }, (error: AxiosError) => { // 请求错误,这里可以用全局提示框进行提示 return Promise.reject(error); }) // response interceptor 接口响应拦截 service.interceptors.response.use((response: AxiosResponse) => { // 直接返回res,当然你也可以只返回res.data // 系统如果有自定义code也可以在这里处理 return response }, (error: AxiosError) => { return Promise.reject(error) }) /** * @description 显示错误消息 * opt 传入参数 * err 错误信息 * type 消息类型 * duration 消息持续时间 */ function showErrMessage(opt, err, type: any = 'error', duration: number = 5000) { ElMessage({ message: err.msg, type: type, duration: duration }) } export default service