Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

82
Views
¿Cómo puedo agregar un encabezado adicional a la instancia global de Axios en una solicitud personalizada?

Este es mi Axios global

 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;

En esta solicitud, necesito agregar un nuevo encabezado: 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; };

Cuando uso esto: axios.defaults.headers.common.invoiceLimit = `${-invoiceLimit}`;

El encabezado se agrega a los valores predeterminados de Axios, pero luego, cuando llamo a axios.put, este encabezado personalizado desaparece y deja solo el encabezado global de los interceptores.

Sé que no es la mejor práctica, pero su API de cliente y no quiero crear otra instancia de Axios sino usar una instancia global.

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Creo que el problema está aquí:

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

Está anulando todos los encabezados de solicitud con solo este:

 { Authorization: `Bearer ${token}` }

Así que intente distribuir encabezados antes de agregar uno nuevo como este:

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

¿Esto resolvió el problema?

about 4 years ago · Juan Pablo Isaza Report

0

Pensé que podría reutilizar la instancia inicial axiosInstance y los encabezados se fusionarán cuando lo haga:

 await axios.put(`${CREDITS_URL.CREDITS}/invoice/limit`,{}, { headers: { invoiceLimit: `${-invoiceLimit}` } })
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!