JavaScript. ¿Cuál es la mejor biblioteca de cliente HTTP?

Con la llegada de las aplicaciones web modernas y el crecimiento de Javascript, los plugins clásicos de jQuery,  o la forma tradicional de XHR para recuperar datos, en sitios web o aplicaciones web, perdieron el poder que tenían en el mercado, ya que nacieron nuevas formas de hacerlo. Algunas son nativas y muy potentes, como es el caso de la API de fetch.

Fetch

fetch() es un método que promete mucho y funciona en muchos casos. Sin embargo, si estás buscando a soluciones más abrangentes y sólidas, bibliotecas como Axios, Request, o Superagent pueden ser lo que estás buscando para desarrollar tu proyecto.

Request sigue siendo la biblioteca más utilizada en los últimos meses según npmtrends.com.

Hoy quiero compartir contigo las características de estas bibliotecas de cliente HTTP más utilizadas. No se trata, por tanto del típico “Axios vs Request vs Superagent”. Espero que este artículo te ayude a seleccionar la mejor biblioteca de cliente HTTP para tu nuevo proyecto si estás interesado en alguna solución para conectar a GraphQL o a una API REST para enviar y recibir datos.

Veamos cuales son las mejores alternativas a fetch.

Axios tiene más estrellas y forks según npmtrends.com

Axios

La semana pasada hablábamos sobre las Promises de JavaScript y no fue una casualidad. La verdad es que es casi imposible desarrollar aplicaciones web modernas sin utilizarlas en alguna funcionalidad. Axios no es una excepción.

¿Qué es Axios?

Axios es un cliente HTTP basado en Promise para el navegador y para Node.js.  Axios soporta todos los navegadores modernos y su instalación es muy sencilla gracias a npm, bower o yarn, o su versión cdn.

Axios es usada por más de 1.600.000 repositorios y se destaca por las siguientes características:

Pros

  1. Permite realizar peticiones XMLHttpRequests desde el navegador.
  2. Permite hacer peticiones http desde node.js
  3. Soporte de la API de Promise (obviamente)
  4. Soporte del lado del cliente para proteger contra XSRF
  5. Intercepta peticiones y respuestas
  6. Transforma datos de peticiones y de respuestas
  7. Transforma automáticamente datos JSON

Cons

  1. No es tan sencillo de utilizar
  2. Necesitas instalar un plugin nuevo.
  3. No soporta HTTP2, ni Electro, ni la API de Stream

Ejemplo

Ejemplo de petición con Axios

Request

Request se define como un cliente simplificado para hacer peticiones HTTP. Siendo el cliente más popular, y uno de los primeros en el gestor de paquetes npm, Request es realmente simple de usar, pero al contrario de Axios no está basada en Promise. Si necesitas usar Promise puedes utilizar la solución request-promise creada por Bluebird. Request-promise es un envoltorio de Request que retorna Promises.

Pros

  • Soporta HTTPS
  • Sigue las redirecciones por defecto
  • Streaming. Puedes transmitir cualquier respuesta a un flujo de archivos
  • Formularios. Soporta application/x-www-form-urlencoded y multipart/form-data para uploads
  • Autenticación HTTP y OAuth

Cons

  • No se basa en Promises de forma nativa
  • No soporta la versión 2 de OAuth
  • Desde marzo de 2019 que está en modo de mantenimiento. `request is done` :(

Ejemplo

Ejemplo de petición con Request

Superagent

SuperAgent es una API ligera de AJAX diseñada para ofrecer flexibilidad, legibilidad y una baja curva de aprendizaje que, como Axios,  funciona también con Node.js y está basada en Promises.

Pros

  • Biblioteca muy conocida por la comunidad
  • interfaz fluida para hacer peticiones HTTP
  • Arquitectura de plugins
  • Muchos plugins disponibles para diferentes funcionalidades
  • API para Promise y Stream
  • Cancelación de petición
  • Reintenta cuando hay algún fallo

Cons

  • No soporta el monitoreo del progreso de carga como XMLHttpRequest.
  • No soporta errores con metadatos

Ejemplo

Ejemplo de petición con SuperAgent

Conclusión

Para terminar,  fetch es el nuevo estandard y es soportado por Chrome y Firefox sin que utilices ninguna biblioteca adicional. Si realmente quieres usar esta herramienta en tus aplicaciones siempre podrás usar algún polyfill para soportar otros navegadores.

De todas formas, creo que vale la pena tener en cuenta las características de Axios o las de SuperAgent para tu próximo proyecto. Ambas tienen buena documentación, son fáciles de utilizar y su curva de aprendizaje no es demasiado empinada. Por otro lado, si eres un fan de Request, debes tener en cuenta que Request está llegando a su final y puede ser un problema implementar con esta biblioteca en producción.

¿Qué biblioteca utilizas para hacer peticiones en tu aplicación web?

Fotografía: StockSnap en Pixabay

Fuentes: