Untitled
unknown
javascript
a year ago
1.3 kB
5
Indexable
import axios from 'axios'; import { ip } from './apiService'; const api = axios.create(); // Add a request interceptor api.interceptors.request.use( (config) => { const token = localStorage.getItem('token'); if (token) { config.headers.Authorization = `Bearer ${token}`; } return config; }, (error) => Promise.reject(error) ); api.interceptors.response.use( (response) => response, async (error) => { const originalRequest = error.config; // If the error status is 401 and there is no originalRequest._retry flag, // it means the token has expired and we need to refresh it if (error.response.status === 401 && !originalRequest._retry) { originalRequest._retry = true; try { const refresh = localStorage.getItem('refresh'); const response = await axios.post(`${ip}/accounts/refresh/`, { refresh }); const { access } = response.data; localStorage.setItem('token', access); // Retry the original request with the new token originalRequest.headers.Authorization = `Bearer ${access}`; return axios(originalRequest); } catch (error) { // Handle refresh token error or redirect to login } } return Promise.reject(error); } ); export default api
Editor is loading...
Leave a Comment