6 - Aplicaciones API REST

Las API REST permiten que diferentes aplicaciones se comuniquen entre sí a través de Internet. Un cliente (sitio web, aplicación móvil, aplicación de escritorio etc.) puede enviar una solicitud a una API REST para obtener o modificar datos, y la API responde con la información solicitada.

Spring Boot facilita enormemente la creación de API REST, ya vimos como crear páginas dinámicas en el servidor.

Crear páginas renderizadas en el servidor con Spring Boot y desarrollar API REST son dos enfoques diferentes para construir aplicaciones .

Páginas dinámicas.

  • Renderización en el servidor: En este enfoque, las páginas web se generan dinámicamente en el servidor antes de ser enviadas al navegador del cliente. El servidor ejecuta código Java (Spring Boot) para generar la página HTML final basada en plantillas (Thymeleaf) y datos recuperados de la base de datos.

  • Multipropósito: Las aplicaciones que utilizan páginas renderizadas en el servidor a menudo se desarrollan para realizar múltiples tareas, como mostrar contenido estático, interactuar con una base de datos y procesar formularios. El servidor maneja tanto la presentación como la lógica del negocio.

  • Menos carga en el cliente: El navegador del cliente solo necesita representar las páginas HTML ya generadas, lo que puede reducir la carga de trabajo del cliente y mejorar el rendimiento percibido, especialmente en dispositivos con recursos limitados.

    Experiencia del usuario más tradicional: Las páginas renderizadas en el servidor a menudo ofrecen una experiencia de usuario más tradicional, con páginas completas que se cargan y actualizan con cada solicitud, lo que puede ser adecuado para aplicaciones donde la navegación tradicional de páginas es preferible.

API REST.

  • Transferencia de datos: En lugar de generar páginas HTML completas, una API REST proporciona un conjunto de puntos finales (endpoints) que permiten a los clientes acceder y manipular datos en el servidor. Estos datos generalmente se transfieren en formato JSON.

  • Separación de responsabilidades: Una API REST se centra en proporcionar acceso a datos y funcionalidades del servidor, mientras que la interfaz de usuario (UI) se implementa por separado en el cliente (por ejemplo, una aplicación web frontend, una aplicación móvil, una aplicación de escritorio etc).

  • Más flexible y escalable: Las API REST permiten una mayor flexibilidad y escalabilidad al separar la presentación de los datos y la lógica del negocio del servidor. Esto facilita la construcción de aplicaciones que pueden ser utilizadas por múltiples clientes (como aplicaciones web, móviles o de escritorio) y que pueden escalar más fácilmente a medida que aumenta la demanda.

  • Experiencia de usuario más dinámica: Las aplicaciones que consumen una API REST suelen ofrecer una experiencia de usuario más dinámica, con interfaces de usuario interactivas que pueden actualizar partes específicas de la página sin necesidad de recargarla por completo. Esto puede ser más adecuado para aplicaciones donde la interactividad y la respuesta en tiempo real son importantes.

Ejemplo de sitios que proveen datos con el modelo de API REST

  • El sitio restcountries.com suministra datos sobre todos los países del mundo como pueden ser su bandera, su moneda etc.
    Para acceder a los datos, provee una serie de URL para hacer las peticiones y nos retorna en formato JSON la información para que nosotros podamos renderizarlas en una página web, una aplicación móvil etc.:

    Todos los países https://restcountries.com/v3.1/all

    Un país https://restcountries.com/v3.1/name/{name}

    Todos los países con un idioma comúnhttps://restcountries.com/v3.1/lang/{language}

    Como podemos comprobar es una forma de servir información que puede ser procesada muchas aplicaciones cliente (página web, aplicación móvil, aplicación de escritorio) y decir como desplegar en el dispositivo dicha información.

    Es importante tener en cuenta que las API REST deben ser procesadas por una aplicación cliente para desplegar la información y no tiene sentido mostrar directamente el resultado a un usuario ya que solo verá un archivo JSON:

    archivo JSON
  • El sitio https://coincap.io/ suministra datos en tiempo real del precio del Bitcoin y otras criptomonedas.
    Para acceder a los datos, provee la URL:https://api.coincap.io/v2/assets/bitcoin

  • El sitio https://dog.ceo suministra la imagen de un perro al azar.
    Para acceder a los datos, provee la URL:https://dog.ceo/api/breeds/image/random

Existen miles de sitios que proveen APIs sobre diversos temas, algunas APIs son gratuitas otras son pagas, ya que requieren mantenimiento, imaginemos los costos de los sitios que proveen la temperatura en tiempo real de diferentes regiones y países.

Podemos consultar otros sitios que proveen APIs en https://github.com/public-apis/public-apis .

A partir del próximo concepto veremos como crear API REST con Spring Boot.