hiCity-nft/src/utils/request.ts

48 lines
1.2 KiB
TypeScript

import { Dispatch } from 'react'
import axios from 'axios'
// import { clearUserInfo } from 'state/actions'
// create an axios instance
const request = axios.create({
baseURL: process.env.REACT_APP_REQUEST_URL,
timeout: 10000, // request timeout
})
let hasInit = false
export const initAxios = (dispatch: Dispatch<any>, toast) => {
if (hasInit) return
hasInit = true
// request interceptor
request.interceptors.request.use(
(memo: any) => {
// do something before request is sent
memo.headers.token = localStorage.getItem('token')
return memo
},
(error) => {
return Promise.reject(error)
},
)
// response interceptor
request.interceptors.response.use(
(response) => {
const res: any = response.data
if (res.code !== 200) {
if (res.code === 401) {
// dispatch(clearUserInfo())
toast.toastError('Login expiration')
return Promise.reject(new Error('Login expiration'))
}
toast.toastError(res.msg)
return Promise.reject(res.msg || 'Error')
}
return res.data
},
(error) => {
return Promise.reject(error)
},
)
}
export default request