rap-react
Version:
To make it easy for you to get started with GitLab, here's a list of recommended next steps.
78 lines (72 loc) • 2.18 kB
JavaScript
import axios from "axios";
import { refreshToken } from "../services/authService";
import { getStorageToken } from "../services/tokenService";
const axiosApiInstance = axios.create();
const axio2 = axios.create();
axio2.interceptors.request.use(
async (config) => {
const token = getStorageToken();
config.headers = {
Authorization: `Bearer ${token}`,
Accept: "application/json",
"Content-Type": "multipart/form-data",
};
config.maxBodyLength = 350000;
return config;
},
(error) => {
Promise.reject(error);
}
);
// Response interceptor for API calls
axio2.interceptors.response.use(
(response) => {
return response;
},
async function (error) {
const originalRequest = error.config;
if (error.response !== undefined && originalRequest !== undefined) {
if (error.response.status === 403 && !originalRequest._retry) {
originalRequest._retry = true;
const access_token = await refreshToken();
axios.defaults.headers.common["Authorization"] =
"Bearer " + access_token;
return axiosApiInstance(originalRequest);
}
}
return Promise.reject(error);
}
);
axiosApiInstance.interceptors.request.use(
async (config) => {
const token = getStorageToken();
config.headers = {
Authorization: `Bearer ${token}`,
Accept: "*/*",
"Content-Type": "application/json",
};
config.maxBodyLength = 350000;
return config;
},
(error) => {
Promise.reject(error);
}
);
// Response interceptor for API calls
axiosApiInstance.interceptors.response.use(
(response) => {
return response;
},
async function (error) {
const originalRequest = error.config;
if (error.response.status === 403 && !originalRequest._retry) {
originalRequest._retry = true;
const access_token = await refreshToken();
axios.defaults.headers.common["Authorization"] = "Bearer " + access_token;
return axiosApiInstance(originalRequest);
}
return Promise.reject(error);
}
);
export default axiosApiInstance;
export { axio2 };