Untitled
unknown
javascript
2 years ago
1.3 kB
7
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 apiEditor is loading...
Leave a Comment