Volver al blog
Guías
Raluca PenciucLast updated on Mar 31, 202611 min read

Las 5 mejores alternativas a Node-Fetch para realizar solicitudes HTTP

Las 5 mejores alternativas a Node-Fetch para realizar solicitudes HTTP

Los miembros del equipo de node-fetch saben lo fácil que es instalar el módulo. Basta con ejecutar un sencillo «npm install node-fetch» para disponer de los recursos al instante. No es necesario implementar XMLHttpRequest.

Aprender a recuperar datos puede resultar abrumador, ya que existen miles de soluciones. Cada solución afirma ser mejor que la otra. Algunas soluciones ofrecen compatibilidad multiplataforma, mientras que otras se centran en la experiencia del desarrollador.

Las aplicaciones web necesitan comunicarse con servidores web con frecuencia para obtener diversos recursos. Es posible que necesites enviar o recuperar datos a una API o a un servidor externo.

En este blog, te guiaré a través de node-fetch. Comprenderás qué es y cómo se puede utilizar. También he incluido alternativas a node-fetch por las que puedes optar.

¡Sin más preámbulos, vamos a ello!

Node-fetch

Node-Fetch es un pequeño módulo que añade la API Fetch a Node.js.

fuente de la imagen

Con fetch (en el navegador o a través de Node Fetch), puedes combinar la sintaxis await y .then para que convertir el flujo de lectura en JSON resulte un poco más agradable; así, los datos,

Como se ve en el ejemplo siguiente, contiene el JSON sin necesidad de una fea variable intermediaria.

Fuente de la imagen

Además, Node Fetch admite extensiones útiles como la restricción del tamaño de la respuesta, el límite de redireccionamientos y los errores explícitos para la depuración.

Puedes utilizar varias bibliotecas, incluida node-fetch en NodeJS, para enviar o recuperar datos. Mientras tanto, en el lado del cliente, se puede utilizar la API Fetch de JavaScript para hacer lo mismo

Puedes cargar el módulo node-fetch antes de obtener la página de inicio de Google. La dirección del servidor al que envías una solicitud HTTP es el único argumento que se proporciona al método fetch(). 

Se pueden encadenar varias rutinas .then() para ayudar a controlar la respuesta y los datos de nuestra solicitud, ya que node-fetch se basa en promesas.

El campo URL simplemente contiene la URL real del recurso que queremos obtener. Si no es una URL absoluta, la función fallará. 

Cuando desees utilizar get() para algo distinto de una solicitud GET estándar, utilizamos el parámetro opcional options, pero lo veremos con más detalle más adelante.

El método devuelve un objeto Response, que proporciona funciones prácticas e información de respuesta HTTP como:

  • Text () - devuelve el cuerpo de la respuesta como una cadena.
  • JSON() - convierte el cuerpo de la respuesta en un objeto JSON y devuelve un error si no se puede procesar.
  • Status y statusText: estos campos contienen información sobre el código de estado HTTP.
  • Ok: es igual a true si el estado es un código de estado 2xx (una condición satisfactoria).
  • Headers: un objeto que contiene los encabezados de la respuesta; se puede utilizar la función get() para obtener un único encabezado.

Popularidad

  • 8 millones de descargas semanales en npm
  • +6,8 mil módulos que dependen de node-rest
  • +383 bifurcaciones
  • 3,8 mil estrellas en GitHub
  • 38 colaboradores

Características de node-fetch

  • Mantener la coherencia con la API .fetch de la ventana.
  • Al seguir la especificación de Stream y los detalles de implementación de la especificación fetch de WHATWG, se deben tener en cuenta las compensaciones y describir las variaciones conocidas.
  • Uso de funciones asíncronas y promesas nativas 
  • Tanto en la solicitud como en la respuesta, utiliza flujos nativos de Node para el cuerpo.
  • Decodifica correctamente la codificación del contenido (gzip/brotli/deflate) y convierte automáticamente la salida de cadenas (incluidas res.json() y res.text()) a UTF-8.
  • Para la depuración, son valiosas las adiciones como la restricción del tamaño de la respuesta, el límite de redireccionamientos y los errores explícitos.

Ventajas

  • Con un tamaño de instalación de unos 150 KB, Node-fetch es quizás el módulo de solicitudes HTTP más ligero. 
  • Ofrece características impresionantes como el modo JSON, la API de promesas, la compatibilidad con navegadores, la cancelación de solicitudes y la capacidad de sustituir su biblioteca de promesas o decodificar codificaciones web contemporáneas como deflate/grip. 
  • Se ajusta a los patrones de solicitud HTTP de JavaScript más recientes y sigue siendo el módulo más descargado después de request, con unos 8 millones de descargas cada semana (superando a Got, Axios y Superagent).

Por qué necesitas una alternativa a Node-fetch

  • No es compatible con HTTP/2 ni con cookies
  • Node-fetch no permite el almacenamiento en caché conforme a RFC
  • Node-fetch no reintenta en caso de fallo. 
  • No admite eventos de progreso, errores de metadatos, tiempos de espera avanzados ni hooks.

Mis mejores alternativas a Node-fetch

Aquí tienes una lista de mis 5 mejores alternativas a Node-fetch que puedes usar en tus soluciones

  • Axios
  • Got
  • Superagent
  • Request
  • WebscrapingAPI

Voy a repasar cada uno de ellos para que entiendas mejor qué son y qué ofrecen.

¡Empecemos!

1. Axios

Axios es un cliente HTTP basado en promesas para Node.js y el navegador. Al igual que SuperAgent, analiza automáticamente las respuestas JSON. Su capacidad para realizar consultas simultáneas utilizando Axios lo distingue aún más. En resumen, 

Para instalar Axios

fuente de la imagen

Puedes realizar la solicitud pasando la configuración correspondiente.

Fuente de la imagen

Debido a su simplicidad, algunos desarrolladores prefieren Axios a las API integradas. Sin embargo, mucha gente sobreestima la necesidad de una biblioteca de este tipo. Node-fetch es totalmente capaz de recrear la funcionalidad esencial de Axios.

Popularidad

  • +4,4 millones de descargas en npm
  • +15,6 mil módulos dependen de él
  • +57 000 estrellas en GitHub
  • 71 colaboradores
  • +4,4 mil bifurcaciones

Características

  • Realiza solicitudes XMLHttpRequest en el navegador
  • Compatible con la API Promise
  • Realizar solicitudes HTTP en Node.js
  • Interceptar respuestas y solicitudes
  • Cancelar solicitudes
  • Transformar datos de respuesta y solicitud
  • Transformaciones automáticas de datos JSON
  • Serialización automática de objetos de datos
  • Compatibilidad con el lado del cliente

Ventajas

  • Axios te permite configurar y personalizar completamente tus solicitudes proporcionándole un único objeto de configuración. Puede supervisar el estado de las solicitudes POST y ejecutar modificaciones automáticas de los datos JSON.
  • Axios también es el módulo de solicitudes HTTP front-end más utilizado. Es muy popular y sigue los patrones de JavaScript más recientes. Gestiona la cancelación de solicitudes, la redirección, gzip/deflate, problemas de metadatos y hooks.

Contras

  • Axios no es compatible con HTTP2, Stream API ni Electron. Tampoco reintenta los errores y se ejecuta en Node.js con soporte integrado para promesas. Para versiones anteriores se requiere Q promise o Bluebird. 2. Got

Got es otro marco de solicitudes HTTP robusto y fácil de usar para Node.js. Inicialmente se diseñó como un sustituto ligero del popular paquete Request. Echa un vistazo a esta tabla detallada para ver cómo se compara Got con otras bibliotecas.

Para instalar Got

Fuente de la imagen

Got tiene una opción para el manejo de cargas JSON. 

Fuente de la imagen

A diferencia de SuperAgent y Axios, Got no analiza automáticamente el JSON. Para habilitar esta capacidad, se añade { JSON: true } como argumento en el código.

Según la documentación, Got se creó porque la solicitud era demasiado grande (¡contiene varios gigabytes!). 4,46 MB frente a 302 KB recibidos).

Popularidad

  • +6,2 millones de descargas en npm
  • +2,5 mil módulos dependen de Got
  • +280 bifurcaciones
  • +5 000 estrellas en GitHub
  • 71 colaboradores

Características

  • Compatible con HTTP/2
  • Compatible con PromiseAPI y StreamAPI
  • Reintenta en caso de fallo
  • Sigue las redirecciones

Ventajas

  • En comparación con otras alternativas, Got ofrece más funcionalidades y está ganando popularidad, ya que es fácil de usar, tiene un tamaño de instalación mínimo y está al día con todos los nuevos patrones de JavaScript.

Contras

  • Got no es compatible con los navegadores 3. SuperAgent

SuperAgent es una pequeña biblioteca de solicitudes HTTP que se puede utilizar en Node.js y en navegadores para realizar consultas AJAX. 

SuperAgent cuenta con miles de complementos disponibles para realizar tareas como evitar el almacenamiento en caché, transformar las cargas útiles del servidor y añadir sufijos o prefijos a las URL. 

Para instalar SuperAgent

fuente de la imagen

Uso en Node

fuente de la imagen

También puedes ampliar la funcionalidad creando tu propio complemento. SuperAgent también puede analizar datos JSON por ti.

Popularidad

  • 2,5 millones de descargas en npm
  • Más de 6.400 módulos dependen de SuperAgent
  • +1,2 mil bifurcaciones
  • +14 000 estrellas en GitHub
  • 182 colaboradores

Ventajas

  • SuperAgent es conocido por ofrecer una interfaz fluida para realizar solicitudes HTTP, una arquitectura de complementos y múltiples complementos para muchas funcionalidades populares a las que se puede acceder actualmente (por ejemplo, su prefijo para añadir un prefijo a cada URL).
  • Superagent también ofrece una API de flujos y promesas, cancelación de solicitudes, reintentos cuando falla una solicitud, es compatible con gzip/deflate y gestiona eventos de progreso.

Contras

  • La compilación de Superagent falla actualmente. Tampoco ofrece seguimiento del progreso de la carga como XMLHttpRequest
  • No admite temporizadores, errores de metadatos ni hooks. 4. Request

Request es uno de los clientes de solicitudes HTTP simples más populares de Node.js, y fue uno de los primeros módulos en publicarse en el registro npm.

Fuente de la imagen

Tiene más de 14 millones de descargas cada semana y está diseñado para ser la forma más sencilla de realizar solicitudes HTTP en Node.js. 

También se puede transmitir un archivo a una solicitud POST o PUT. Este método comparará la asignación de tipos de contenido de la extensión del archivo con las extensiones de archivo. 

También puedes personalizar encabezados HTTP como User-Agent en el objeto de opciones.

Propiedades

  • +9 millones de descargas en npm
  • +6,4 mil módulos dependen de Request
  • +3,2 mil bifurcaciones
  • +25,2 mil estrellas en GitHub
  • 126 colaboradores

Características

  • Admite HTTPS
  • de forma predeterminada y sigue las redirecciones.

Ventajas

  • Es fácil empezar a usar Request y es fácil de usar.
  • Es un módulo popular y muy utilizado para realizar llamadas HTTP

Contras

Está totalmente obsoleto desde 2020. No se esperan nuevos cambios

5. WebScrapingAPI

Debo decir que WebScrapingAPI me ha ofrecido soluciones prácticas a los retos a los que me he enfrentado al extraer datos de la web. WebScrapingAPI me ha ahorrado tiempo y dinero, ayudándome a centrarme en desarrollar mi producto.

WebScrapingAPI es una API escalable de nivel empresarial y fácil de usar que ayuda a recopilar y gestionar datos HTML. No olvidemos que obtienes toda tu solución de web scraping en una sola API, lo que significa un código limpio.

Fuente de la imagen

Configurar la clave API y los argumentos de la URL, así como tu clave de acceso al sitio web que deseas rastrear, es la solicitud básica más sencilla que puedes realizar a la API.

Comprender las capacidades que ofrece WebScrapingAPI es fundamental para ayudarnos en nuestro proceso de web scraping. Esta información se puede obtener en la extensa documentación, que incluye ejemplos de código en varios lenguajes de programación.

Muchas veces me he enfrentado a contramedidas que detectaban y bloqueaban a mi bot para que no hiciera lo que yo quería. Esto se debe a que no se pueden extraer datos de todos los sitios web. Algunos emplean contramedidas como la huella digital del navegador y los CAPTCHA, lo cual es un fastidio.

Lidiar con las tecnologías de detección de bots puede ser un reto, pero WebScrapingAPI ofrece soluciones que van desde los CAPTCHAs hasta el bloqueo de IP y los reintentos automáticos, gestionándolo todo. Solo tienes que concentrarte en tus objetivos. Ellos se encargan de todo lo demás.

fuente

Cuenta con una excelente competencia técnica y más de 100 millones de proxies que garantizan que no te bloqueen. Esto se debe a que algunos sitios web solo se pueden rastrear en determinados lugares del mundo. Para ello, necesitas un proxy para acceder a sus datos.

Dado que gestionar un conjunto de proxies es complicado, WebScrapingAPI se encarga de todo por ti. Cuenta con millones de proxies rotativos para garantizar que no te detecten. También te permite acceder a contenido con restricciones geográficas utilizando una dirección IP específica.

Esta API ofrece renderización de JavaScript. Puedes activar la renderización de JavaScript utilizando navegadores reales. Tras activarla, podrás ver todo lo que se muestra a los usuarios. Esto incluye aplicaciones de una sola página que utilizan AngularJS, React u otras bibliotecas.

fuente de la imagen

Lo que ven los usuarios es exactamente lo que tú ves. ¿Qué mejor ventaja competitiva podría haber?

Además, la infraestructura de la API está construida en Amazon Web Services, lo que te ofrece acceso a datos masivos globales, amplios, seguros y fiables.

En mi sincera opinión, utilizar WebScrapingAPI es todo un acierto.

Ventajas

  • Desarrollada en AWS
  • Precios asequibles
  • Arquitectura centrada en la velocidad
  • TODOS los paquetes incluyen renderización en JavaScript
  • Servicios de alta calidad, tiempo de actividad y estabilidad absoluta
  • Más de 100 millones de proxies rotativos para reducir los bloqueos
  • Funciones personalizables

Contras

Ninguno hasta ahora.

Precios

  • El plan básico para utilizar esta API cuesta 49 $ al mes. 
  • Opciones de prueba gratuita

WebScrapingAPI es una buena opción si crees que no tienes tiempo para crear un rastreador web desde cero. No lo dudes y échale un vistazo

Por qué WebScrapingAPI es mi principal recomendación:

Recomiendo WebScrapingAPI porque ofrece soluciones sencillas de scraping web para todo el mundo en una sola API. Además, cuenta con una de las mejores interfaces de usuario, lo que facilita la extracción de datos.

La API es lo suficientemente potente como para hacer tu trabajo.

Dediquemos un momento a considerar todos los datos que tienes a tu disposición. No olvides que puedes acceder a precios competitivos y ofrecer a tus clientes mejores ofertas. 

WebScrapingAPI te ofrece optimización de precios. ¿Cómo? Déjame explicártelo así. Tu negocio puede crecer significativamente al tener una mejor visión de tu competencia. A medida que los precios fluctúan en tu sector, puedes utilizar los datos de esta API para saber cómo sobrevivirá tu negocio.

Fuente de la imagen

WebScrapingAPI resulta muy útil a la hora de buscar un artículo que quieras comprar. Puedes utilizar los datos para comparar precios de varios proveedores y elegir la mejor oferta.

Además, no tienes que preocuparte por que te bloqueen. ¿Por qué? Porque esta API se asegura de que obtengas los datos que necesitas sin bloqueos. Con millones de proxies rotativos, pasas desapercibido y puedes acceder a contenido con restricciones geográficas utilizando una dirección IP específica.

¿A que mola?

La infraestructura de la API también está construida en Amazon Web Services, lo que te ofrece acceso a datos masivos globales, amplios, seguros y fiables. Por eso, empresas como Steelseries, Deloitte y Wunderman Thompson confían en esta API para sus necesidades de datos y servicios de web scraping.

fuente

Además, solo cuesta 49 $ al mes. Me encanta la velocidad que tiene. Y gracias al uso de una red global de proxies rotativos, ya cuenta con más de 10 000 usuarios que utilizan sus servicios. Por eso recomiendo usar WebScrapingAPI para la obtención de datos.

Comienza tu aventura en el web scraping con la API REST líder en web scraping

Acerca del autor
Raluca Penciuc, Desarrollador full-stack @ WebScrapingAPI
Raluca PenciucDesarrollador full-stack

Raluca Penciuc es desarrolladora full stack en WebScrapingAPI, donde se dedica a crear rastreadores, mejorar las técnicas de evasión y buscar formas fiables de reducir la detección en los sitios web de destino.

Empieza a crear

¿Estás listo para ampliar tu recopilación de datos?

Únete a más de 2000 empresas que utilizan WebScrapingAPI para extraer datos de la web a escala empresarial sin ningún gasto de infraestructura.