Lad node-fetch vælge proxy-agenten efter en omdirigering
Brug en agentfunktion til HTTP- og HTTPS-destinationer, så en omdirigering kan vælge den passende proxy-agent.
Den første URL kan være HTTPS og den omdirigerede URL HTTP. Vælg agenten ud fra destinationen for hver anmodning i stedet for at binde én agent til den første URL.
Til den importerede node-fetch-pakke i en ESM-applikation skal du angive en funktion:
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,
});Erstat API-URL'en og proxy-endpointet. Til et offentligt API, der er tilladt gennem en offentlig mellemmand, giver HTTP-proxylisten kandidater til proxyUrl. De to agenter kan bruge den samme HTTP-proxy-lytter; deres navne henviser til anmodningen til destinationen.
| URL sendt til vælgeren | Valgt agent |
|---|---|
| https://… | httpsAgent |
| http://… | httpAgent |
Funktionen vælger derfor stadig den matchende agent, hvis en omdirigering ændrer destinationens protokol. proxyUrl beskriver fortsat mellemmanden, uafhængigt af den beslutning.
Opret agenterne én gang til arbejdsbyrden, og genbrug dem. Håndtér den returnerede status, og læs svarsteksten i den kaldende kode. Denne agentgrænseflade tilhører node-fetch; Nodes indbyggede fetch bruger en anden transportgrænseflade.