O primeiro URL pode ser HTTPS e o URL redirecionado HTTP. Escolha o agente conforme o destino de cada requisição, em vez de prender um único agente ao primeiro URL.

Para o pacote node-fetch importado em uma aplicação ESM, forneça uma função:

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,
});

Substitua o URL da API e o endpoint do proxy. Para uma API pública permitida por meio de um intermediário público, a lista de proxies HTTP fornece candidatos para proxyUrl. Os dois agentes podem usar o mesmo listener de proxy HTTP; seus nomes se referem à requisição para o destino.

URL passado ao seletorAgente selecionado
https://…httpsAgent
http://…httpAgent

Portanto, a função continua escolhendo o agente correspondente se um redirecionamento mudar o protocolo do destino. proxyUrl continua descrevendo o intermediário, independentemente dessa decisão.

Crie os agentes uma vez para a carga de trabalho e reutilize-os. Trate o status retornado e consuma o corpo da resposta no código que faz a chamada. Esta interface de agente pertence ao node-fetch; o fetch embutido do Node usa outra interface de transporte.

Artigos relacionados