1 REST API¶
Introducción¶
Como ya se vió en el tema anterior, API son las siglas de "Interfaz de Programación de Aplicaciones" en inglés, que se traduce como "Application Programming Interface". En términos simples, una API es un conjunto de reglas y definiciones que permite que diferentes aplicaciones se comuniquen entre sí.
Una API define los métodos y datos que un desarrollador puede usar para interactuar con un software o servicio específico, sin necesidad de comprender los detalles internos de cómo funciona ese software. Las APIs son fundamentales para la creación de software moderno, ya que permiten la integración de diferentes sistemas, servicios y aplicaciones, facilitando la interoperabilidad y la creación de soluciones más complejas.
En el contexto de la web, las APIs a menudo se utilizan para permitir que aplicaciones web se comuniquen con servidores, accedan a bases de datos, o integren servicios externos. Por ejemplo, las redes sociales suelen ofrecer APIs que permiten a los desarrolladores crear aplicaciones que interactúan con la plataforma, como aplicaciones para programar publicaciones, acceder a datos de usuarios, entre otras funcionalidades.
Diferentes arquitecturas¶
Existen diferentes formas de crear una API, a lo largo del tiempo se han determinado diferentes arquitectura para poder diseñar una API:
- REST (Representational State Transfer). Es una arquitectura que utiliza los métodos HTTP para realizar las operaciones en recursos identificados por URLs.
- SOAP (Simple Object Access Protocol). Es un protocolo basado XML para el intercambio de información estructurada en la web. A diferencia de REST, SOAP no está ligado a ningún protocolo de transporte específico y puede utilizarse sobre HTTP, SMTP, TCP, etc.
- GraphQL: Es una consulta de datos y un lenguaje de manipulación de datos desarrollado por Facebook. Permite a los clientes solicitar solo los datos que necesitan y nada más, lo que puede ser más eficiente que las consultas tradicionales de REST.
- RPC (Remote Procedure Call): Es un modelo de comunicación que permite a un programa ejecutar código en otro espacio de direcciones de manera transparente, como si fuera una llamada a una función local. Protocolos como gRPC se basan en este concepto.
- JSON-RPC y XML-RPC: Son protocolos que utilizan JSON o XML para la codificación de datos y permiten la ejecución remota de funciones.
- OData (Open Data Protocol): Es un protocolo estándar de la OASIS que permite la creación y el consumo de servicios web RESTful. Facilita la creación de servicios web que permiten la consulta y manipulación de datos utilizando estándares web.
Estas son solo algunas de las arquitecturas comunes, y la elección de la arquitectura depende de varios factores, como los requisitos del proyecto, la naturaleza de los datos, la escalabilidad y las preferencias del desarrollador. La tendencia actual tiende hacia arquitecturas RESTful debido a su simplicidad y eficiencia en la mayoría de los casos.
API REST¶
Una REST API (Interfaz de Programación de Aplicaciones basada en Transferencia de Estado Representacional) es un conjunto de reglas y convenciones arquitectónicas para diseñar servicios web que se centran en la transferencia de datos y la manipulación de recursos a través de los métodos estándar del protocolo HTTP. REST se basa en la idea de que las aplicaciones web pueden comunicarse entre sí de manera eficiente mediante la manipulación de representaciones de recursos a través de URLs.
Algunas características clave de una REST API incluyen:
- Recursos: En el contexto de REST, un recurso es una entidad o un concepto que puede ser identificado mediante una URL única. Pueden ser objetos de la vida real o abstractos, como datos de usuarios, imágenes, o cualquier otra entidad.
- Operaciones estándar: REST utiliza los métodos HTTP estándar, como GET, POST, PUT y DELETE, para realizar operaciones sobre los recursos. Cada método tiene un propósito específico: GET para obtener datos, POST para crear nuevos recursos, PUT para actualizar recursos existentes, y DELETE para eliminar recursos.
- Estado Representacional: La representación de un recurso (como JSON o XML) se envía al cliente, y el cliente puede realizar operaciones basadas en esa representación. Cada recurso puede tener múltiples representaciones (por ejemplo, JSON y XML), y el cliente puede indicar sus preferencias mediante encabezados HTTP.
- Sin estado (Stateless): Cada solicitud del cliente al servidor en una REST API debe contener toda la información necesaria para entender y procesar la solicitud. La comunicación entre cliente y servidor no debe depender del estado del servidor; cada solicitud debe ser independiente de las anteriores.
- Jerarquía de URL: Las URLs se utilizan para identificar y acceder a los recursos. La estructura de las URLs suele seguir una jerarquía que refleja la organización de los recursos.
- HATEOAS (Hypermedia As The Engine Of Application State): Este principio sugiere que la aplicación debe ser impulsada por el hipervínculo proporcionado dinámicamente por las aplicaciones servidores de los estados de la aplicación, guiando a los usuarios a través de las acciones disponibles.
Una REST API es una opción común y popular para construir servicios web debido a su simplicidad, escalabilidad y facilidad de comprensión. Es ampliamente utilizada en aplicaciones web y móviles para permitir la comunicación eficiente entre el cliente y el servidor.