API RESTful
API RESTful
La API RESTful es una interfaz que dos sistemas de computación utilizan para intercambiar
información de manera segura a través de Internet. La mayoría de las aplicaciones para
empresas deben comunicarse con otras aplicaciones internas o de terceros para llevar a cabo
varias tareas. Por ejemplo, para generar nóminas mensuales, su sistema interno de cuentas
debe compartir datos con el sistema bancario de su cliente para automatizar la facturación y
comunicarse con una aplicación interna de planillas de horarios. Las API RESTful admiten este
intercambio de información porque siguen estándares de comunicación de software seguros,
confiables y eficientes.
Una interfaz de programa de aplicación (API) define las reglas que se deben seguir para
comunicarse con otros sistemas de software. Los desarrolladores exponen o crean API para
que otras aplicaciones puedan comunicarse con sus aplicaciones mediante programación. Por
ejemplo, la aplicación de planilla de horarios expone una API que solicita el nombre completo
de un empleado y un rango de fechas. Cuando recibe esta información, procesa internamente
la planilla de horarios del empleado y devuelve la cantidad de horas trabajadas en ese rango
de fechas.
Se puede pensar en una API web como una puerta de enlace entre los clientes y los recursos
de la Web.
Clientes
Los clientes son usuarios que desean acceder a información desde la Web. El cliente puede ser
una persona o un sistema de software que utiliza la API. Por ejemplo, los desarrolladores
pueden escribir programas que accedan a los datos del tiempo desde un sistema de clima.
También se puede acceder a los mismos datos desde el navegador cuando se visita
directamente el sitio web de clima.
Recursos
Los recursos son la información que diferentes aplicaciones proporcionan a sus clientes. Los
recursos pueden ser imágenes, videos, texto, números o cualquier tipo de datos. La máquina
encargada de entregar el recurso al cliente también recibe el nombre de servidor. Las
organizaciones utilizan las API para compartir recursos y proporcionar servicios web, a la vez
que mantienen la seguridad, el control y la autenticación. Además, las API las ayudan a
determinar qué clientes obtienen acceso a recursos internos específicos.
¿Qué es REST?
Los desarrolladores de API pueden diseñar API por medio de varias arquitecturas diferentes.
Las API que siguen el estilo arquitectónico de REST se llaman API REST. Los servicios web que
implementan una arquitectura de REST son llamados servicios web RESTful. El término API
RESTful suele referirse a las API web RESTful. Sin embargo, los términos API REST y API RESTful
se pueden utilizar de forma intercambiable.
Interfaz uniforme
La interfaz uniforme es fundamental para el diseño de cualquier servicio web RESTful. Ella
indica que el servidor transfiere información en un formato estándar. El recurso formateado se
denomina representación en REST. Este formato puede ser diferente de la representación
interna del recurso en la aplicación del servidor. Por ejemplo, el servidor puede almacenar los
datos como texto, pero enviarlos en un formato de representación HTML.
Las solicitudes deben identificar los recursos. Lo hacen mediante el uso de un identificador
uniforme de recursos.
Los clientes tienen información suficiente en la representación del recurso como para
modificarlo o eliminarlo si lo desean. El servidor cumple esta condición por medio del envío de
los metadatos que describen el recurso con mayor detalle.
Los clientes reciben información sobre cómo seguir procesando la representación. El servidor
logra esto enviando mensajes autodescriptivos que contienen metadatos sobre cómo el cliente
puede utilizarlos de mejor manera.
Los clientes reciben información sobre todos los demás recursos relacionados que necesitan
para completar una tarea. El servidor logra esto enviando hipervínculos en la representación
para que los clientes puedan descubrir dinámicamente más recursos.
En una arquitectura de sistema por capas, el cliente puede conectarse con otros
intermediarios autorizados entre el cliente y el servidor y todavía recibirá respuestas del
servidor. Los servidores también pueden pasar las solicitudes a otros servidores. Es posible
diseñar el servicio web RESTful para que se ejecute en varios servidores con múltiples capas,
como la seguridad, la aplicación y la lógica empresarial, que trabajan juntas para cumplir las
solicitudes de los clientes. Estas capas se mantienen invisibles para el cliente.
Almacenamiento en caché
Escalabilidad
Los sistemas que implementan API REST pueden escalar de forma eficiente porque REST
optimiza las interacciones entre el cliente y el servidor. La tecnología sin estado elimina la
carga del servidor porque este no debe retener la información de solicitudes pasadas del
cliente. El almacenamiento en caché bien administrado elimina de forma parcial o total
algunas interacciones entre el cliente y el servidor. Todas estas características admiten la
escalabilidad, sin provocar cuellos de botella en la comunicación que reduzcan el rendimiento.
Flexibilidad
Los servicios web RESTful admiten una separación total entre el cliente y el servidor.
Simplifican y desacoplan varios componentes del servidor, de manera que cada parte pueda
evolucionar de manera independiente. Los cambios de la plataforma o la tecnología en la
aplicación del servidor no afectan la aplicación del cliente. La capacidad de ordenar en capas
las funciones de la aplicación aumenta la flexibilidad aún más. Por ejemplo, los desarrolladores
pueden efectuar cambios en la capa de la base de datos sin tener que volver a escribir la lógica
de la aplicación.
Independencia
Las API REST son independientes de la tecnología que se utiliza. Puede escribir aplicaciones del
lado del cliente y del servidor en diversos lenguajes de programación, sin afectar el diseño de
la API. También puede cambiar la tecnología subyacente en cualquiera de los lados sin que se
vea afectada la comunicación.
La función básica de una API RESTful es la misma que navegar por Internet. Cuando requiere
un recurso, el cliente se pone en contacto con el servidor mediante la API. Los desarrolladores
de API explican cómo el cliente debe utilizar la API REST en la documentación de la API de la
aplicación del servidor. A continuación, se indican los pasos generales para cualquier llamada a
la API REST:
El cliente envía una solicitud al servidor. El cliente sigue la documentación de la API para dar
formato a la solicitud de una manera que el servidor comprenda.
El servidor autentica al cliente y confirma que este tiene el derecho de hacer dicha solicitud.
Luego, devuelve una respuesta al cliente. Esta respuesta contiene información que dice al
cliente si la solicitud se procesó de manera correcta. La respuesta también incluye cualquier
información que el cliente haya solicitado.
Los detalles de la solicitud y la respuesta de la API REST varían un poco en función de cómo los
desarrolladores de la API la hayan diseñado.
Las API RESTful requieren que las solicitudes contengan los siguientes componentes
principales:
El servidor identifica cada recurso con identificadores únicos de recursos. En los servicios REST,
el servidor por lo general identifica los recursos mediante el uso de un localizador uniforme de
recursos (URL). El URL especifica la ruta hacia el recurso. Un URL es similar a la dirección de un
sitio web que se ingresa al navegador para visitar cualquier página web. El URL también se
denomina punto de conexión de la solicitud y especifica con claridad al servidor qué requiere
el cliente.
Método
Los desarrolladores a menudo implementan API RESTful mediante el uso del protocolo de
transferencia de hipertexto (HTTP). Un método de HTTP informa al servidor lo que debe hacer
con el recurso. A continuación, se indican cuatro métodos de HTTP comunes:
GET
Los clientes utilizan GET para acceder a los recursos que están ubicados en el URL especificado
en el servidor. Pueden almacenar en caché las solicitudes GET y enviar parámetros en la
solicitud de la API RESTful para indicar al servidor que filtre los datos antes de enviarlos.
POST
Los clientes usan POST para enviar datos al servidor. Incluyen la representación de los datos
con la solicitud. Enviar la misma solicitud POST varias veces produce el efecto secundario de
crear el mismo recurso varias veces.
PUT
Los clientes utilizan PUT para actualizar los recursos existentes en el servidor. A diferencia de
POST, el envío de la misma solicitud PUT varias veces en un servicio web RESTful da el mismo
resultado.
DELETE
Los clientes utilizan la solicitud DELETE para eliminar el recurso. Una solicitud DELETE puede
cambiar el estado del servidor. Sin embargo, si el usuario no cuenta con la autenticación
adecuada, la solicitud fallará.
Encabezados de HTTP
Los encabezados de solicitudes son los metadatos que se intercambian entre el cliente y el
servidor. Por ejemplo, el encabezado de la solicitud indica el formato de la solicitud y la
respuesta, proporciona información sobre el estado de la solicitud, etc.
Datos
Las solicitudes de la API REST pueden incluir datos para que los métodos POST, PUT y otros
métodos HTTP funcionen de manera correcta.
Parámetros
Las solicitudes de la API RESTful pueden incluir parámetros que brindan al servidor más
detalles sobre lo que se debe hacer. A continuación, se indican algunos tipos de parámetros
diferentes:
Un servicio web RESTful debe autenticar las solicitudes antes de poder enviar una respuesta.
La autenticación es el proceso de verificar una identidad. Por ejemplo, puede demostrar su
identidad mostrando una tarjeta de identificación o una licencia de conducir. De forma similar,
los clientes de los servicios RESTful deben demostrar su identidad al servidor para establecer
confianza.
Autenticación HTTP
HTTP define algunos esquemas de autenticación que se pueden utilizar directamente cuando
se implementa la API REST. A continuación, se indican dos de estos esquemas:
Autenticación básica
En la autenticación básica, el cliente envía el nombre y la contraseña del usuario en el
encabezado de la solicitud. Los codifica con base64, que es una técnica de codificación que
convierte el par en un conjunto de 64 caracteres para su transmisión segura.
Claves de la API
Las claves de la API son otra opción para la autenticación de la API REST. En este enfoque, el
servidor asigna un valor único generado a un cliente por primera vez. Cada vez que el cliente
intenta acceder a los recursos, utiliza la clave de API única para su verificación. Las claves de
API son menos seguras debido a que el cliente debe transmitir la clave, lo que la vuelve
vulnerable al robo de red.
OAuth
OAuth combina contraseñas y tokens para el acceso de inicio de sesión de alta seguridad a
cualquier sistema. El servidor primero solicita una contraseña y luego solicita un token
adicional para completar el proceso de autorización. Puede verificar el token en cualquier
momento y, también, a lo largo del tiempo, con un alcance y duración específicos.
Los principios de REST requieren que la respuesta del servidor contenga los siguientes
componentes principales:
Línea de estado
La línea de estado contiene un código de estado de tres dígitos que comunica si la solicitud se
procesó de manera correcta o dio error. Por ejemplo, los códigos 2XX indican el procesamiento
correcto, pero los códigos 4XX y 5XX indican errores. Los códigos 3XX indican la redirección de
URL.
'{"name":"John", "age":30}'
Encabezados
proporcionar a los usuarios rendimiento de alta velocidad tanto para las solicitudes como para
las respuestas de la API
autorizar el acceso a sus API con AWS Identity and Access Management (IAM) y Amazon
Cognito, que proporcionan compatibilidad nativa con OAuth
ejecutar varias versiones de la misma API simultáneamente con API Gateway para permitir la
iteración, la puesta a prueba y el lanzamiento de nuevas versiones rápidos
supervisar las métricas de rendimiento y la información sobre las llamadas a la API, la latencia
de los datos y los índices de error desde API Gateway