Last active
February 27, 2025 17:58
-
-
Save sohseyedi-web/aea884d054c09ec9b1fe67be52980fee to your computer and use it in GitHub Desktop.
Axios Interceptor (RefreshToken - AccessToken)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import axios from "axios"; | |
| const BASE_URL = process.env.API_URL; | |
| const app = axios.create({ | |
| baseURL: BASE_URL, | |
| withCredentials: true, | |
| }); | |
| app.interceptors.request.use( | |
| (res) => res, | |
| (err) => Promise.reject(err) | |
| ); | |
| app.interceptors.response.use( | |
| (res) => res, | |
| async (err) => { | |
| const originalConfig = err.config; | |
| if (err.response.status === 401 && !originalConfig._retry) { | |
| originalConfig._retry = true; | |
| try { | |
| const { data } = await axios.get(`${BASE_URL}/refresh-token`, { | |
| withCredentials: true, | |
| }); | |
| if (data) return app(originalConfig); | |
| } catch (error) { | |
| return Promise.reject(error); | |
| } | |
| } | |
| return Promise.reject(err); | |
| } | |
| ); | |
| const api = { | |
| get: app.get, | |
| post: app.post, | |
| delete: app.delete, | |
| put: app.put, | |
| patch: app.patch, | |
| }; | |
| export default api; | |
| // const {data} = await api.get("/") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment