Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Muitos desenvolvedores que migraram para o Node.js 18.3 notaram que a API fetch nativa, baseada na biblioteca undici, trouxe melhorias de performance e compatibilidade, mas também trouxe desafios na hora de configurar proxies para requisições HTTP. A tentativa de usar pacotes tradicionais de proxy, como o proxy-agent, não funciona mais de forma direta, pois eles não são compatíveis com a implementação do undici.
Esse artigo aborda uma abordagem prática para realizar requisições via proxy usando a API fetch nativa, considerando as limitações atuais e as melhores práticas para garantir uma implementação confiável.
O principal problema reside na incompatibilidade entre os wrappers de proxy tradicionais, que dependem de APIs antigas do Node.js, e a nova implementação do fetch, que usa a biblioteca undici. O pacote proxy-agent, por exemplo, foi projetado para trabalhar com as APIs do módulo http/https, como http.request, e não funciona com undici.
Além disso, o undici, que é a base do fetch, possui seu próprio suporte interno a proxies, mas essa funcionalidade ainda não está exposta de forma direta na API pública, o que exige uma abordagem mais manual. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. A decisão fica mais saudável quando o time consegue medir o impacto depois.
Para contornar essa limitação, a solução recomendada atualmente envolve o uso do próprio undici, que está integrado ao fetch, e a implementação de um ProxyAgent csutomizado. Aqui estão os passos principais: Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. A decisão fica mais saudável quando o time consegue medir o impacto depois. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco.
1. Instalar o pacote undici:
npm install undici
2. Criar um agente de proxy personalizado usando as funcionalidades internas do undici:
import { Agent } from 'undici'. const proxyUrl = 'http://80.48.119.28:8080'. const agent = new Agent({ proxy: proxyUrl }). // Utilizar o fetch com o agente customizado
const response = await fetch('https://api.ipify.org?format=json', { agent }). const data = await response.json(). console.log(data).
3. Importar o fetch do undici ou usar a API nativa do Node.js 18.3, que já incorpora o undici, garantindo compatibilidade:
import { fetch } from 'node-fetch'. // se necessário, dependendo da versão
// ou usar diretamente a fetch nativa
// O agente criado anteriormente será reconhecido pela API do fetch
No cenário atual, a melhor prática é usar o pacote undici para configurar proxies de forma explícita. Assim, você garante maior controle e compatibilidade com o novo fetch, além de evitar problemas de incompatibilidade. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. A decisão fica mais saudável quando o time consegue medir o impacto depois. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco.
Se precisar de mais detalhes ou exemplos de implementação, posso ajudar a montar um setup completo para seu projeto. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco.
Carregando comentários...