Laat node-fetch de proxy-agent kiezen na een omleiding
Gebruik een agentfunctie voor HTTP- en HTTPS-bestemmingen, zodat een omleiding de juiste proxy-agent kan kiezen.
De eerste URL kan HTTPS zijn en de omgeleide URL HTTP. Kies de agent op basis van de bestemming van elk verzoek, in plaats van één agent aan de eerste URL te koppelen.
Voor het geïmporteerde node-fetch-pakket in een ESM-applicatie, geef een functie mee:
import fetch from 'node-fetch';
import { HttpProxyAgent } from 'http-proxy-agent';
import { HttpsProxyAgent } from 'https-proxy-agent';
const proxyUrl = 'http://proxy.example:8080';
const httpAgent = new HttpProxyAgent(proxyUrl);
const httpsAgent = new HttpsProxyAgent(proxyUrl);
const response = await fetch('https://api.example/', {
agent: url => url.protocol === 'http:' ? httpAgent : httpsAgent,
});Vervang de API-URL en het proxy-eindpunt. Voor een openbare API die via een openbare tussenpartij is toegestaan, levert de HTTP-proxylijst kandidaten voor proxyUrl. De twee agents kunnen dezelfde HTTP-proxy-listener gebruiken; hun namen verwijzen naar het verzoek naar de bestemming.
| URL doorgegeven aan de selectiefunctie | Gekozen agent |
|---|---|
| https://… | httpsAgent |
| http://… | httpAgent |
De functie kiest dus nog steeds de juiste agent als een omleiding het protocol van de bestemming wijzigt. proxyUrl blijft de tussenpartij beschrijven, los van die beslissing.
Maak de agents één keer aan voor de werklast en hergebruik ze. Behandel de geretourneerde status en lees de responsbody in de aanroepende code. Deze agentinterface hoort bij node-fetch; de ingebouwde fetch van Node gebruikt een andere transportinterface.