Skip to content

Instantly share code, notes, and snippets.

@neharkarvishal
Created February 22, 2023 17:01
Show Gist options
  • Save neharkarvishal/c5bc8dd0561eff530fee5d3908aee2d3 to your computer and use it in GitHub Desktop.
Save neharkarvishal/c5bc8dd0561eff530fee5d3908aee2d3 to your computer and use it in GitHub Desktop.

Revisions

  1. neharkarvishal created this gist Feb 22, 2023.
    38 changes: 38 additions & 0 deletions retry.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,38 @@
    import axios from "axios";
    import {v4 as uuid} from 'uuid'

    const API_URL = `${process.env.REACT_APP_URL}/`;
    const Axios = axios.create({
    baseURL: API_URL,
    });

    //API Call Interceptor to add token to the header.
    Axios.interceptors.request.use(
    async (config) => {
    const token = store.getState().auth.token;
    config.headers["Authorization"] = "Bearer " + token;
    config.headers["X-Request-ID"] = `${uuid()}`
    return config;
    },
    (error) => {
    Promise.reject(error);
    }
    );
    Axios.interceptors.response.use((response) => {
    return response
    }, async function (error) {
    const originalRequest = error.config;
    if (error.response.status === 400 && !originalRequest._retry) {
    originalRequest._retry = true;
    const token = await getAccessToken();
    axios.defaults.headers.common['Authorization'] = 'Bearer ' + token;
    return Axios(originalRequest);
    }
    return Promise.reject(error);
    });

    const options = {
    headers: {
    "Content-Type": "application/json",
    },
    };