tuoheng_virtualAirPlan_web/src/utils/request/index.js

126 lines
3.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import axios from 'axios'
// import { ElLoading, ElMessage } from 'element-plus'
import router from '@/router'
import { useSettingStore } from '@/stores/setting.js'
// request是一个axios实例,每一个实例你都可以单独定制它的baseURL,超时时间,请求头和一些其他配置项。
const baseUrl = import.meta.env.VITE_APP_API_BASE_URL + '/airport/admin' //接口统一域名
// const baseUrl = '/airport/admin' //接口统一域名
// const baseUrl = '/airport/admin'
// 设置统一的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