Untitled
unknown
javascript
4 years ago
1.4 kB
5
Indexable
import axios from 'axios'; export const baseURL = process.env.REACT_APP_BACKEND_URL; const axiosInstance = axios.create({ baseURL, }); axiosInstance.interceptors.response.use( response => response, error => { const originalRequest = error.config; const refreshToken = localStorage.getItem('refreshToken'); const url = error?.response?.config.url; if ( refreshToken && error?.response?.status === 401 && !originalRequest.retry && !['/users/refresh', '/users/verify'].includes(url) ) { originalRequest.retry = true; return axiosInstance .post('/users/refresh', { refresh: refreshToken }) .then(res => { localStorage.setItem('accessToken', res.data.access); localStorage.setItem('refreshToken', res.data.refresh); axiosInstance.defaults.headers.common.Authorization = `Bearer ${res.data.access}`; return axiosInstance({ ...originalRequest, headers: { ...originalRequest.headers, Authorization: `Bearer ${res.data.access}`, }, }); }); } return Promise.reject( (error.response && error.response.data) || { detail: 'Something went wrong', } ); } ); export { axiosInstance, axiosMockInstance };
Editor is loading...