Las Interfaces de Programación de Aplicaciones, o API, son una forma de que los programas o servicios informáticos se comuniquen entre sí. Esta comunicación suele producirse a través de un punto final de la API, expuesto por un programa que consume un cliente.

Este artículo comparará dos enfoques populares para crear API: la API de transferencia de estado representacional (REST) y la API Web.

¿Qué Es una API REST?

Contrariamente a la creencia popular, la API REST no es un protocolo. Es una arquitectura, y es la arquitectura más popular para desarrollar API. Como explicamos en GraphQL vs REST: Todo lo que Necesitas Saber, REST no tiene estado, por lo que no se almacenan datos ni estado entre peticiones.

REST también define múltiples restricciones arquitectónicas para construir aplicaciones que se comunican a través de HTTP:

  • Arquitectura cliente-servidor
  • Sin estado
  • Interfaz uniforme
  • Almacenabilidad en caché
  • Arquitectura de sistema en capas
  • Código bajo demanda

REST es más fácil de usar que otros protocolos o arquitecturas de API. También ofrece otras muchas ventajas que lo convierten en la primera opción para muchos desarrolladores que crean APIS:

  • Diversos formatos de mensajes: Las API REST se utilizan sobre todo con JSON para serializar datos, pero funcionan con varios formatos de mensaje, como JSON, HTTP, texto sin formato y XML. Esta variedad de opciones le da una ventaja sobre protocolos como el Protocolo de Acceso a Objetos de Servicio (SOAP), que funcionan principalmente con XML sobre HTTP, con opciones como JSON, que es significativamente más ligero, más flexible con soporte para matrices y más fácil de analizar en comparación con XML.
  • Métodos HTTP: REST se utiliza normalmente con cualquiera de los métodos GET, POST, PATCH, DELETE, o PUT para recuperar datos y hacer peticiones dependiendo de la implementación del servicio. Estos métodos devuelven códigos HTTP comunes de éxito y fracaso. Otros métodos son OPTIONS, HEAD, y TRACE. Estos métodos son incoherentes entre servicios, ya que algunos proveedores sólo pueden implementar un único método según sus necesidades.
  • Arquitectura desacoplada: REST tiene una arquitectura cliente-servidor, por lo que su lógica está separada de la presentación: se puede trabajar simultáneamente en varias partes sin interferencias.
  • Escalabilidad: Las API REST son sencillas, lo que facilita su uso. Sin embargo, si necesitas ampliarlas, puedes crear nuevos puntos finales para incorporar una lógica más compleja.
  • Almacenabilidad en caché: Aunque REST no tiene estado, la respuesta del servidor en el cliente puede almacenarse en caché para evitar repetir peticiones redundantes. La respuesta del servidor suele dar información sobre cómo debe ejecutarse el almacenamiento en caché — el cliente almacena en caché las solicitudes durante un periodo determinado.
  • Seguridad: En la mayoría de los casos, los puntos finales REST se exponen a través de puntos finales HTTPS, lo que garantiza que toda la comunicación de la API está protegida mediante TLS/SSL. REST también admite otros esquemas de autorización y autenticación, como OAuth2 y JSON Web Tokens (JWT).

¿Qué Es una API Web?

Una API Web es simplemente una interfaz para acceder a los recursos del servidor a través de HTTP. El término se refiere al concepto más que a una tecnología específica — una API Web puede construirse con varias tecnologías, como Java y ASP.NET. Las API Web utilizan una interfaz de código abierto y aprovechan muchas entidades cliente, como navegadores, smartphones, tabletas y ordenadores portátiles.

Las API Web implementan especificaciones de protocolo con conceptos como el almacenamiento en caché, el versionado y diversos formatos de contenido. Una API Web puede ser o no una API REST, dependiendo de cómo esté construida. Las API Web suelen utilizarse en un sistema distribuido para prestar servicios en distintos dispositivos, como smartphones y ordenadores portátiles, y se limitan al lado cliente de la aplicación web.

Aquí tienes dos ejemplos de API Web muy utilizadas:

  • API de Google: Incluyen las API de YouTube, que permiten a los desarrolladores incrustar vídeos de YouTube en sus aplicaciones, como sitios web, y la API de Google Maps, que permite a los desarrolladores utilizar o incrustar Google Maps en páginas web utilizando interfaces JavaScript o Flash.
  • API de Twitter: Incluyen la API de búsqueda de Twitter, que proporciona métodos para interactuar con la búsqueda de Twitter, y la API REST, que te permite acceder a los datos principales de Twitter.

Una API Web se lleva a cabo como una interacción de sistema a sistema. Así es como podrían fluir los datos dentro de una API de este tipo:

  1. El dispositivo cliente envía solicitudes al servidor web.
  2. El servidor web recibe la solicitud, la procesa y la devuelve al dispositivo cliente para que la ejecute.
  3. El resultado se muestra al usuario.

Entre las características más beneficiosas de las API web se incluyen:

  • Arquitectura ligera: Las API Web destacan en dispositivos con un ancho de banda limitado, como los smartphones.
  • Cabeceras de mensaje descriptivas: Las API Web tienen cabeceras de mensaje descriptivas, que pueden contener información sobre el tipo de contenido, el esquema de seguridad o cómo gestionar el almacenamiento en caché.
  • Admite todos los tipos de datos: El cuerpo de una API web puede utilizarse para cualquier cosa, incluidos archivos binarios (vídeos, imágenes, documentos), XML plano, JSON y HTML.
  • Servicio orientado a recursos: Una API web puede exponer recursos de forma que se ajuste a la arquitectura REST.
  • Fácil configuración e instalación: Las API web son fáciles de configurar y ejecutar.

API Web VS API REST

Ahora vamos a comparar estas dos APIS con más detalle.

Similitudes de Arquitectura

Las API Web y REST comparten algunas similitudes arquitectónicas — vamos a echarles un vistazo.

  • Ausencia de estado: Las solicitudes HTTP se producen de forma aislada y son fundamentalmente apátridas, ya que cada solicitud contiene información suficiente para completarla. Las solicitudes múltiples sólo se asocian entre sí a través de información compartida, como cookies o un identificador de sesión. La ausencia de sincronización de estados reduce la complejidad y aumenta el rendimiento, ya que el servidor no necesita hacer un seguimiento de las peticiones de los clientes. Las peticiones concurrentes también pueden escalarse a través de múltiples servidores.
  • Arquitectura en capas: Ambas soportan un diseño de arquitectura por capas en el que el despliegue de la API, la autenticación de las solicitudes y el almacenamiento pueden realizarse en varios servidores.
  • Orientada a los recursos: En las arquitecturas orientadas a recursos, éstos se asignan a Identificadores Uniformes de Recursos (URI). Tanto las API Web como las REST están orientadas a los recursos, ya que los exponen a través de URI.
  • Almacenabilidad encaché: En las API REST y Web, las consultas que devuelven la misma información cada vez que se llaman se almacenan en caché. Por ejemplo, una llamada a OPTION en un endpoint se almacenará en caché, ya que la salida es la misma independientemente de cuántas veces se llame. Esta propiedad, conocida como idempotencia, es una buena base para determinar cuándo se pueden almacenar datos en caché. La idempotencia siempre se tiene en cuenta en REST, aunque no tanto en las API web. Una llamada idempotente a la API es aquella cuyos resultados nunca cambiarán — independientemente de cuántas veces se llame —  aunque exista la posibilidad de que algo cambie en el servidor. Algunos ejemplos de métodos idempotentes son GET, HEAD y OPTIONS.

Diferencias de Arquitectura

Aunque las API Web y las API REST tienen patrones arquitectónicos similares, también tienen algunas diferencias clave.

  • Coordinación entre el cliente y el servidor: Las API REST tienen una arquitectura poco acoplada, que permite el desarrollo independiente en el lado del cliente y del servidor. Con las API Web, los cambios entre el cliente y el servidor se coordinan de forma más precisa.
  • Interfaz: Dependiendo de los detalles de implementación, las API REST tienden a utilizar interfaces estándar del sector. Las API Web utilizan interfaces personalizadas, dependiendo del proveedor de la API.

Comunicación

Las API Web son lo suficientemente flexibles como para aprovechar cualquier estilo de comunicación, mientras que las API REST se utilizan principalmente con JSON, XML y texto sin formato. Estas opciones significan que las API REST funcionan bien para la transmisión de datos textuales, como las operaciones de creación, lectura, actualización y eliminación (CRUD) contra una base de datos, pero son más restrictivas cuando se trata de datos binarios.

Las API Web ofrecen una experiencia mucho mejor para los servicios que requieren datos binarios — como servicios de streaming de vídeo o música — ya que admiten más formatos de mensaje.

Casos de Uso

Aunque estos formatos de API son intercambiables en muchos casos, hay algunos escenarios en los que uno es mejor que el otro:

  • Servicios y aplicaciones en la nube: Debido a su naturaleza apátrida, las API REST se utilizan en servicios en la nube, ya que los componentes apátridas pueden escalar y volver a desplegarse para adaptarse a los cambios. Los servicios en la nube y las métricas suelen exponerse mejor como API REST, ya que hay poca necesidad de código personalizado.
  • Servicios de streaming: Las API Web tienen mejor soporte y baja sobrecarga de datos binarios de aplicación en dispositivos con memoria o ancho de banda limitados, por lo que son mejores para servicios que requieren streaming.
  • Manipulación de bases de datos (CRUD): Es más sencillo y fácil exponer la funcionalidad CRUD a través de una API REST que de una API Web.

Las API REST son difíciles de gestionar para solicitudes complejas que necesitan acceder a recursos que no están dispuestos en una jerarquía simple. Esto se debe a que sus URI hacen referencia a recursos, lo que significa que gestionar este tipo de situaciones implica manipular las rutas URI, los parámetros de consulta y el cuerpo de la solicitud, lo que anula el propósito de REST. En este caso, es preferible una API web porque permite la personalización y tiene un amplio soporte para las cabeceras de respuesta y solicitud URI.

Con soporte para técnicas como las llamadas asíncronas  — que no se implementan fácilmente utilizando la arquitectura REST— las API web son el camino a seguir para las necesidades de API complejas.

Resumen

Las API web y REST se utilizan para crear aplicaciones que proporcionan recursos y se comunican a través de HTTP. Mientras que REST describe restricciones arquitectónicas sobre una interfaz uniforme, las API web son, en general, un concepto que puede ser RESTful, dependiendo de la implementación.

Tanto las API Web como las REST son formatos ligeros e intercambiables en muchas situaciones. Sin embargo, en comparación con las API REST, las API Web proporcionan una experiencia más personalizada y admiten más tipos de mensajes, además de soportar interacciones complejas entre servidores y clientes que tratan con datos binarios.

Y con los servicios de alojamiento de aplicaciones de Kinsta, puedes crear, probar y enviar tus proyectos de API a la nube de forma más rápida y eficiente.

Salman Ravoof

Salman Ravoof is a self-taught web developer, writer, creator, and a huge admirer of Free and Open Source Software (FOSS). Besides tech, he's excited by science, philosophy, photography, arts, cats, and food. Learn more about him on his website, and connect with Salman on Twitter.