1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- 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",
- // baseURL: "http://192.168.123.216:8001",
- // baseURL: "http://localhost:8001",
- // 设置接口访问超时时间
- 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
|