Files
jc-club-front/src/utils/request.ts
秋水浮尘 5a17d2da74 feat: 联调
2023-11-12 16:54:55 +08:00

72 lines
1.8 KiB
TypeScript

import { message } from 'antd'
import axios from 'axios'
export const baseHttp = () => {
const http = axios.create({
baseURL: '/subject',
timeout: 5 * 60 * 1000, // request timeout
withCredentials: true, // send cookies when cross-domain requests
headers: {
'Content-Type': 'application/json; charset=utf-8'
}
})
return http
}
export default function request(config, url) {
console.log(config, url, 'config url')
// const navigate = useNavigate()
const userInfoStorage = localStorage.getItem('userInfo')
const userInfo = userInfoStorage ? JSON.parse(userInfoStorage) : {}
const baseURL = url || '/subject/subject'
// 1.创建axios的实例
const instance = axios.create({
baseURL,
timeout: 5 * 60 * 1000, // request timeout
withCredentials: true, // send cookies when cross-domain requests
headers: {
'Content-Type': 'application/json; charset=utf-8',
[userInfo.tokenName]: 'jichi ' + userInfo.tokenValue
}
})
// 2.axios的拦截器
// 2.1.请求拦截的作用
instance.interceptors.request.use(
config => {
return config
},
err => {
console.log(err)
}
)
// 2.2.响应拦截
instance.interceptors.response.use(
res => {
let { code } = res.data
if (code === 500) {
message.error(res.data.message)
}
if (code === 401) {
window.location.replace('/login')
}
return res.data
},
err => {
let { status } = err?.response ?? {}
if (status === 401 || !status) {
message.info('页面异常')
window.location.replace('/login')
} else if (status === 500 || status === 503) {
message.error('服务器错误')
}
return Promise.reject(err)
}
)
// 3.发送真正的网络请求
return instance(config)
}