const axiosConfig = {
baseURL: baseUrl,
retries: 1,
retryCount: 0,
}
const client = axios.create(axiosConfig)
client.interceptors.response.use(
response => {
return response
},
async error => {
if (error.response?.status === 401) {
if ((error.config.retries ?? 0) > (error.config.retryCount ?? 0)) {
error.config.retryCount = (error.config.retryCount ?? 0) + 1
const res = await client.post('/auth/v1/refresh', {
username: xxxx,
})
const config = error.config
config.headers = JSON.parse(
JSON.stringify(config.headers || {})
) as RawAxiosRequestHeaders
config.headers['Authorization'] = `Bearer ${res.token}`
return client.request(config)
}
}
return Promise.reject(error)
}
)