Aquí en confianza, ¿Qué son las APIS Web?


Autor: Alejandro Cruz Rojas    Sígueme en LinkedIn


El concepto de Interfaz de Programación de Aplicaciones (Application Program Interface) se ha utilizado en diversos sistemas y plataformas informáticas mucho antes de que la web se convirtiera en una parte fundamental de la tecnología actual. Las API han existido desde hace mucho tiempo en sistemas operativos, bibliotecas de programación, bases de datos y muchas otras áreas de la informática.

El término API se refiere tradicionalmente a una librería que ofrece componentes de programación que pueden ser invocados desde el código de un programa hecho por un desarrollador.


Las APIs web parten de esa idea: La invocación de una funcionalidad que es externa al programa. La diferencia radica en que una API Web se invoca y devuelve resultados usando la infraestructura de Internet. Esto significa que las funcionalidades son publicadas en un servidor que puede responder a peticiones en el protocolo HTTP y que es a través de ese protocolo que se puede invocar a tales funcionalidades. Del mismo modo, los resultados deben envolverse en una respuesta HTTP y codificarse utilizando un formato estandarizado. Típicamente, JSon o XML.


Un «endpoint» es un URI (Identificador de Recursos Uniforme) que representa una ubicación única en la que una API puede ser accesada. Cada endpoint corresponde a una operación o función particular que la API puede llevar a cabo. Por ejemplo, recuperar información, guardar datos o realizar alguna otra acción específica.

Los endpoints suelen representar recursos o entidades dentro de la aplicación o sistema que la API está exponiendo. Por ejemplo, en una API de redes sociales, un endpoint podría representar un usuario, un mensaje, o un comentario.

Los endpoints pueden estar asociados con operaciones CRUD (Crear, Leer, Actualizar, Eliminar) que se pueden realizar sobre los recursos usando verbos del protocolo HTTP. Por ejemplo:

  • GET/usuarios: Recupera una lista de usuarios.
  • POST /usuarios: Crea un nuevo usuario.
  • GET /usuarios/{id}: Recupera un usuario específico por su ID.
  • PUT /usuarios/{id}: Actualiza un usuario existente.
  • DELETE /usuarios/{id}: Elimina un usuario.

Los endpoints definen cómo se deben estructurar las solicitudes y respuestas HTTP para interactuar con la API. Esto incluye el formato de los datos (generalmente JSON o XML), los parámetros de solicitud y los códigos de estado de respuesta.

Piezas Tecnológicas y sus roles en las APIs Web

Dado que las invocaciones a las APIs Web se hacen a través de internet, el programa que hace esas peticiones (el cliente) debe generar sus peticiones en HTTP. Los lenguajes de programación modernos generalmente ofrecen objetos de librería para simplificar esta tarea.

Aunque se pueden dar variedad de configuraciones, enseguida describo las piezas arquetípicas que tiene una arquitectura que publica APIs Web (las implementaciones y herramientas que se pueden usar son muy diversas, sin embargo los roles descritos tienden a aparecer siempre).

Piezas arquetípicas en la arquitectura de una API Web hipotética

  1. Una vez que la petición llega a nuestro dominio, un filtro de peticiones debe analizar la petición para averiguar si se trata de una solicitud legítima y si corresponde a un usuario válido. El filtro debe rechazar cualquier petición que sea sospechosa y guardar huellas de auditoría para posteriores análisis sobre intentos de ataque o fraude. Los filtros generalmente interactúan con gestores de autenticación-autorización.
    1. Un gestor de autenticación-autorización es responsable de revisar las credenciales del usuario (autenticación) para asegurar que son válidas y para recuperar la lista de los recursos a los que el usuario asociado puede acceder (autorización).
    2. El gestor de autenticación puede generar un diálogo con el usuario para canjear su identificación por un token (o gafete electrónico) que será usado en cada una de las posteriores peticiones. Este token típicamente se usa para validar los recursos que el usuario tiene autorizados y tiene una vigencia temporal acorde al nivel de seguridad que requiere la API.
  2. Es común que exista una punto centralizado en el que arriben todas las peticiones para una o más APIs, con la intención de aplicar pre-procesamientos de las peticiones. Estos pre-procesamientos pueden incluir monitoreo de las peticiones, registro estadístico, desencriptado, descompresión, validación, enrutado, etc. La pieza que es responsable de estas labores es conocida como Getway.
  3. Si se tiene un volumen muy alto de peticiones, podemos tener diversas instancias del Gateway a fin de poder atender más peticiones de manera simultánea. Para la asignación de cada petición a una instancia del Gateway se usa un balanceador de carga. Esta pieza es responsable de llevar una contabilidad de las peticiones pendientes de terminar que tiene cada Getway y de asignar cada nueva petición de manera inteligente a la instancia del Gateway que esté menos ocupada.
  4. El Gateway hace llegar la petición pre-procesada al servidor Web que posea el EndPoint solicitado por la petición. Si hay diversas instancias de cada servidor, el Gateway también puede hacer labores de balanceo de carga.
  5. El servidor Web es la pieza que almacena las aplicaciones Web que publican EndPoints. Es el responsable de proveer el procesamiento paralelo de peticiones y de convertir una petición en HTTP a una representación que se pueda manipular desde un lenguaje de programación como Java, C#, etc. Del mismo modo convierte representaciones de salida en respuestas HTTP que puedan ser devueltas al cliente.
  6. La aplicación Web procesa la petición de acuerdo a su lógica. Generalmente delegará procesamientos parciales a una capa de servicios de negocio, que a su vez puede invocar a muchas otras piezas que forman el back-end. Cuando se tiene el recurso de salida se convierte al formato convenido en la especificación de la API Web (JSon o XML por lo general) y se incrusta en el objeto que representa la respuesta http.

La arquitectura de un API Web corporativa puede tener más o menos piezas dependiendo de su complejidad y volumen de operación. Así mismo, puede tener requerimientos normativos o de seguridad que impliquen la incorporación de piezas adicionales a las descritas.

El Gobierno de las APIs

Conforme la organización tenga cada vez más APIs Web publicadas, la probabilidad de cometer errores aumentará. Es de suma importancia establecer el grupo de reglas que deberán regir el ciclo de vida de las APIs y de sus versiones.

Consideremos que una vez que se ha publicado una API Web, ésta puede ser usada por clientes dentro y fuera de la organización y se integrará a diversos flujos de trabajo. Esto significa que deberemos hacer un esfuerzo para que tales APIs sean confiables y evolucionen sin romper clientes. La confiabilidad esperada involucra desarrollar procesos que aseguren la calidad de esas APIs en el tiempo.

Aspectos clave a ser abordados por la gobernanza

Conclusiones

  • Las APIs Web Son una nueva forma de una vieja idea: Código de otros que puede ser invocado desde nuestros programas.
  • Son una herramienta indispensable en los tiempos actuales para integrar aplicaciones internas y externas.
  • Son un mecanismo para hacer aplicaciones con funcionalidades muy poderosas, que integran servicios propios o de terceros.
  • Dado que usan muchas tecnologías distintas y que integran partes que provienen de distintos sitios requieren, si o si, esfuerzos de gobierno corporativo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *