tuoheng_virtualAirPlan_web/src/utils/request/index.js

125 lines
3.3 KiB
JavaScript
Raw Normal View History

2025-08-22 09:43:16 +08:00
import axios from 'axios'
// import { ElLoading, ElMessage } from 'element-plus'
import router from '@/router'
import { useSettingStore } from '@/stores/setting.js'
// request是一个axios实例,每一个实例你都可以单独定制它的baseURL,超时时间,请求头和一些其他配置项。
2025-08-27 10:39:08 +08:00
const baseUrl = import.meta.env.VITE_APP_API_BASE_URL + '/airport/admin' //接口统一域名
// const baseUrl = '/airport/admin'
2025-08-22 09:43:16 +08:00
// 设置统一的url
// axios.defaults.baseURL = '/airport/admin'
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',
},
})
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) => {
// 每次发送请求之前判断是否存在token如果存在则统一在http请求的header都加上token不用每次请求都手动添加了
// const { token_type, access_token } = userInfo
config.headers.Authorization = `${localStorage.getItem('access_token')}`
config.headers['Client-Id'] = import.meta.env.VITE_APP_CLIENT_ID
//若请求方式为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 == 402) {
// ElMessage.error(response.data.msg)
router.push('/')
}
//响应成功
// console.log('拦截器报错');
else return response.data
},
(error) => {
// hideLoading()
//响应错误
let message = ''
if (error.response && error.response.status) {
const status = error.response.status
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