Servicios Web RESTful (I) - Introducción

Publicado por Jaime Martínez el

Arquitectura de SolucionesRESTAPI-FirstOpenAPIHTTPMicroservicios

Introducción

Este es el primero de un conjunto de artículos sobre la comunicación entre aplicaciones mediantes servicios RESTful.

Aquí se tratarán los conceptos básicos para a continuación ir profundizando en cada uno de ellos.

Posteriormente se abordará la definición e implementación de soluciones mediante casos de ejemplo para tener un enfoque teórico-práctico completo.

emlf-web-restful-1-1400x400px.jpg

El índice para acceder a cada uno de ellos en función del conocimiento o necesidades que se tengan es el siguiente:

¿Qué es un servicio RESTful?

Un servicio Restful es una interfaz o API (de sus siglas en inglés, Application Programming Interface) que permite la comunicación entre dos sistemas o aplicativos definiendo las operaciones que se pueden realizar y los datos que se
transmiten en cada una de ellas; basándose para ello en la arquitectura REST.

¿Qué es REST?

REST (Representational State Transfer) es una arquitectura de software que define un conjunto de restricciones y propiedades basadas en el protocolo HTTP. Fue diseñado por Roy Fielding y se centra en la creación de sistemas
escalables y eficientes mediante el uso de recursos y métodos HTTP estándar.

Su objetivo es estandarizar las comunicaciones web de una manera simple y clara.

Principales características

Cliente-Servidor: El cliente hace uso de la API expuesta por el servidor mediante una petición, la cual, el servidor
contesta con una respuesta.

Interfaz estándar: Este principio se basa en la utilización de métodos HTTP estándar (siendo los principales GET, POST,
PUT y DELETE) y de URIs únicas para interactuar con los recursos.

Stateless (Sin Estado): Cada petición del cliente al servidor debe contener toda la información necesaria para poder ser entendida y procesada. El servidor no almacena el estado del cliente entre las solicitudes, lo que mejora la
escalabilidad y la simplicidad del sistema.

Conceptos

Recursos

Son el elemento principal de la arquitectura REST que representa un concepto del negocio (por ejemplo, en un aplicativo de gestión de cuentas, un recurso sería la propia cuenta con toda la información asociada a ella). Estos elementos de
información son identificados mediante URIs únicas que permiten la realización de las distintas operaciones (creación,
modificación, borrado y consulta) de manera independiente.

URIs (Uniform Resource Identifier)

Son identificadores únicos de un recurso formados por varios componentes, incluidos el protocolo, el nombre de dominio y la ruta. Su objetivo es proporcionar acceso a los recursos a través de peticiones HTTP permitiendo su manipulación a través de distintas operativas mediante los diferentes verbos HTTP.

Volviendo sobre el ejemplo de cuentas una URI podría ser: http://localhost:8080/api/accounts

Métodos (Verbos HTTP)

Permiten la manipulación de los recursos realizando las siguientes operaciones:

  • GET: obtención de recursos.
  • POST: creación de nuevos recursos.
  • PUT: modificación de recursos (es completa, es decir, se modifica toda la información del recurso).
  • PATCH: modificación parcial de recursos (se modifica parte de la información del recurso).
  • DELETE: eliminación de recursos

Códigos de estado (HTTP Status)

Se utilizan los estándares del protocolo HTTP que se agrupan en los siguientes:

  • 1XX: Respuestas informativas.
  • 2XX: Peticiones correctas.
  • 3XX: Redirecciones.
  • 4XX: Errores del cliente.
  • 5XX: Errores del servidor.

Conclusiones

Ventajas de los Servicios Web RESTful

Simplicidad: Utiliza los métodos HTTP estándar, lo que facilita su implementación y uso.

Escalabilidad: La arquitectura sin estado y la capacidad de cachear respuestas mejoran la escalabilidad.

Flexibilidad: Puede ser utilizado con cualquier lenguaje de programación y es compatible con múltiples formatos de datos
como JSON y XML.

Interoperabilidad: Facilita la integración entre diferentes sistemas y aplicaciones.

Desventajas de los Servicios Web RESTful

Limitaciones de HTTP: Aunque HTTP es un protocolo robusto, tiene limitaciones en términos de seguridad y rendimiento que pueden afectar a las APIs RESTful.

Complejidad en la Gestión de Estados: La naturaleza sin estado de REST puede complicar la gestión de estados en aplicaciones complejas.

Sobrecarga de Datos: En algunos casos, las respuestas pueden incluir más datos de los necesarios, lo que puede afectar el rendimiento.

Resumen

Los servicios web RESTful son una herramienta poderosa para la integración de aplicaciones y servicios en la web. Su simplicidad, flexibilidad y escalabilidad los hacen ideales para una amplia variedad de casos de uso en el desarrollo de software moderno. Sin embargo, es importante tener en cuenta las limitaciones y seguir las mejores prácticas para
diseñar APIs robustas y seguras.