UNPKG

create-bar-project

Version:

This module helps create a base for web application projects.

37 lines (29 loc) 955 B
import axios, { AxiosRequestConfig, AxiosResponse } from 'axios'; import { getToken } from 'Common/Utils/Cookies'; const API = axios.create({ baseURL: process.env.NEXT_PUBLIC_SERVER_API_URL, responseType: 'json', }); const addTokenToHeader = (config: AxiosRequestConfig): AxiosRequestConfig => { const token = getToken(); if (token) { config.headers = { Authorization: `Bearer ${token}` }; } return config; }; const extractResponseData = (response: AxiosResponse): any => { if (response.data) { return response.data; } return response; }; const extractResponseError = (error: { response: { data: { error: string } } }): never => { const errorMessage = error?.response?.data; if (errorMessage) { throw new Error(errorMessage?.error); } throw error; }; API.interceptors.request.use(addTokenToHeader); API.interceptors.response.use(extractResponseData, extractResponseError); export default API;