Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

83
Visualizações
How can I add an aditional header to global instance of Axios in a custom request?

This is my global Axios

import axios from 'axios';
import { storage } from 'containers/login/utils/local-storage';

const token = storage.getToken();

const axiosInstance = axios.create({
  baseURL: process.env.REACT_APP_API_URL,
});

    axiosInstance.interceptors.response.use((response) => {
  response.config.headers = {
    Authorization: `Bearer ${token}`,
  };

  return response;
}, (error) => Promise.reject(error));

axiosInstance.interceptors.request.use((request) => {
  request.headers = {
    Authorization: `Bearer ${token}`,
  };

  return request;
}, (error) => Promise.reject(error));

export default axiosInstance;

In this request I need to add new header: invoiceLimit = `${-invoiceLimit}`

export const updateInvoiceLimit = async (
  invoiceLimit: string,
)
  : Promise<ReturnDataType> => {
  let result: ReturnDataType = {} as ReturnDataType;

  try {
    axios.defaults.headers.common.invoiceLimit = `${-invoiceLimit}`;
    result = await axios.put(`${CREDITS_URL.CREDITS}/invoice/limit`);
   
    return result;
  } catch (error) {
    SnackBarUtils.error(`${(error as Error).message}. ${result.data.message}`);
  }

  return result;
};

When I use this: axios.defaults.headers.common.invoiceLimit = `${-invoiceLimit}`;

header adds to the Axios defaults, but then when I call axios.put so this custom header goes away and left only global header from interceptors.

I know it's not best practice, but its customer API and I want not to make another instance of Axios but use one global instance.

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

I think the problem is here:

axiosInstance.interceptors.request.use((request) => {
  request.headers = {
    Authorization: `Bearer ${token}`,
  };

  return request;
}, (error) => Promise.reject(error));

You are overriding all request headers with just this one:

{ Authorization: `Bearer ${token}` }

So try spreading headers before adding the new one like this:

axiosInstance.interceptors.request.use((request) => {
  request.headers = {
    ...request.headers,
    Authorization: `Bearer ${token}`,
  };

  return request;
}, (error) => Promise.reject(error));

Did this solve the problem?

about 4 years ago · Juan Pablo Isaza Relatório

0

I thought you could just reuse the initial axiosInstance and the headers will be merged when you do:

await axios.put(`${CREDITS_URL.CREDITS}/invoice/limit`,{}, {
  headers: {
    invoiceLimit: `${-invoiceLimit}`
  }
})
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda