| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- // src/utils/request.ts
- import axios from 'axios'
- import { ElMessage } from 'element-plus'
- import type { AxiosInstance, AxiosResponse } from 'axios'
- // 创建 axios 实例
- const service: AxiosInstance = axios.create({
- baseURL: import.meta.env.VITE_API_BASE_URL || '', // 从环境变量中读取
- timeout: 100000000, // 超时时间
- withCredentials: true // 是否允许携带 cookie
- })
- // 请求拦截器
- service.interceptors.request.use(
- (config) => {
- // 可在此添加 token 到 headers 中
- const token = localStorage.getItem('token')
- if (token) {
- config.headers!['Authorization'] = `${token}`
- }
- return config
- },
- (error) => {
- // 请求错误处理
- console.error('请求错误:', error)
- return Promise.reject(error)
- }
- )
- // 响应拦截器
- service.interceptors.response.use(
- (response: AxiosResponse) => {
- const res = response.data
- if(res.code !== 200){
- if(res.code == 406 && res.data.message){
- ElMessage.warning(res.data.message)
- }else{
- ElMessage.warning(res.msg)
- }
- }
-
- /*
- if (res.code !== 200) {
- ElMessage({
- message: res.msg || '请求失败',
- type: 'error',
- duration: 5 * 1000,
- })
- // 特殊状态码处理,如 token 失效等
- if (res.code === 401) {
- // 跳转登录页
- // window.location.href = '/'
- }
- return Promise.reject(res.msg || '请求失败')
- }
- */
- return res
- },
- (error) => {
- // 网络错误、超时等处理
- let message = ''
- if (axios.isCancel(error)) {
- console.log(axios.isCancel(error))
- message = ''
- }else{
- message = error.message.includes('timeout') ? '请求超时' : '网络异常'
- }
- if(message){
- ElMessage({
- message,
- type: 'error',
- })
- }
- return Promise.reject(error)
- }
- )
- export default service
|