developit / developit/redaxios
Not possible to transform headers per request
- Lingua principale
- JavaScript
- Stelle
- 4.9k
- Fork
- 104
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
I'm using transformRequest to add custom header to the request before it is sent the following way:
```
const apiClient = redaxios.create({
baseURL,
headers: {
Accept: 'application/json',
'Content-Type': 'application/json; charset=utf-8',
},
transformRequest: [(data, headers) => {
console.log(headers['Payload-Signature']); // <-- here I see header set for previous request
if (data) headers['Payload-Signature'] = signRequestBody(data);
}],
});
```
As show in code above headers object is shared between requests and because of that it is not possible to customise headers per requests before one is sent.
The reason is that internal deepMerge function doesn't create a copy of 'options.header' property.
Expected behaviour:
I would expect it is possible to safely transform headers per request or modify other request props.
As a workaround I define a custom fetch:
```
const apiClient = redaxios.create({
baseURL,
headers: {
Accept: 'application/json',
'Content-Type': 'application/json; charset=utf-8',
},
fetch: (url, options) => fetch(url, {
...options,
headers: {
...options.headers,
'payload-signature': signRequestBody(options.body),
},
}),
});
```
Guida per i contributori
Apri la guida per i contributori
Direzione di ricerca
Inizia tracciando la creazione delle request attraverso la funzione interna deepMerge e l’entry point transformRequest, confrontando il modo in cui l’oggetto headers viene riutilizzato tra le request. Verifica il comportamento con request ripetute usando l’esempio transformRequest mostrato; il lavoro è concluso quando le trasformazioni degli header per request non osservano più mutazioni provenienti da request precedenti e il workaround custom-fetch documentato rimane non necessario.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- javascript
- Ambito
- api
- Tipo di issue
- Bug
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Stato di attività
- Ferma
- Chiarezza
- Specificata chiaramente
- Idoneità per principianti
- 50/100