¿Qué son las API?
¿Alguna vez has pensado cómo puedes iniciar sesión en tus aplicaciones favoritas como Facebook, Hashnode, dev.to, LinkedIn y otros? Sé que me has dado cuenta y has comenzado a pensar rápidamente. O ¿has imaginado cómo fácilmente pudiste entrar en la aplicación de vuelos WakaNow y obtener las tarifas más baratas y más económicas del mundo? Incluso los amantes del fútbol no se quedan atrás ya que pueden acceder a los resultados en tiempo real.
La respuesta a todo esto es que estas comunican con otros sistemas para obtener estos datos o para verificar detalles, y el modo de comunicación es a través de una API.
En este artículo, se desvelará el concepto de API y se obtendrá una comprensión clara y apropiada de lo que son las APIs, sus tipos y su modo de operación.
I. Introducción a las APIs
A. ¿Qué es una API?
Una API, que significa Interfaz de Programación de Aplicaciones, es simplemente una herramienta a través de la cual los sistemas o tecnologías se pueden comunicar entre ellos compartiendo información o datos. Puede explicarse además como una capa a través de la cual los sistemas se pueden comunicar entre ellos siguiendo un protocolo o estándar según el cual se produce la compartición.
B. ¿Por qué las APIs son importantes?
Las APIs son importantes porque permiten a sistemas y tecnologías interactuar entre sí, compartir datos y funcionalidades, y trabajar juntos para crear sistemas poderosos y eficientes. Además, las APIs conceden a los desarrolladores la súper habilidad para juntar aplicaciones para realizar una tarea específica. Por ejemplo, un blog de moda y puede integrar la API de Flutterwave para permitir que los clientes paguen por diseños o seminarios, también puede usar su cuenta de Google para iniciar sesión en cualquier aplicación enlazada a ella.
Las APIs se pueden usar para obtener datos de terceros y intercambiar información, lo que nos permite hacer cosas locas como ingenieros de software.
Cómo funcionan las APIs?
Vamos a trabajar con esta analogía, quieres estudiar en una universidad. Tienes que seguir una serie de procesos que implicarían realizar exámenes y aplicar con los resultados a tu institución deseada. No tienes que ir directamente al oficial de admisión para una solicitud, sino que simplemente visitas su portal, introduce tus detalles y subes las credenciales. Mientras esperas la admisión, una serie de cosas suceden en el backend que no conoces, pero recibirás la admisión si se cumplen los requisitos.
El proceso entero es el siguiente, queremos comunicarnos con la oficina de admisión de la Escuela y, ya que no podemos acceder directamente a la oficina de admisión, usamos una capa de API que en este escenario es el portal de la Escuela, a lo que se referirás como un Punto final. Cada Punto final tiene su propio protocolo que es necesario y el resultado esperado. En este ejemplo, el portal de la escuela nos protege de todo lo complicado que ocurre en la oficina de admisión.
Imagine que no existía un portal de admisión, tendrías que ir a la Oficina de Admisiones de la Universidad para presentar tus detalles, lo cual sería consume de tiempo y no libre de errores.
Para conectar dos aplicaciones de software a través de Internet, un programa conocido como el cliente envía una solicitud a la API del otro programa. El cliente solicita un recurso de la base de datos de la aplicación o pide que se realice una acción en el servidor.
Después de recibir y validar la solicitud del cliente, la API realiza la acción deseada y devuelve una respuesta al cliente. Esta respuesta comprende el estado de la solicitud (finalizado o rechazado) así como cualquier recurso solicitado por el cliente.
Fig 1. El funcionamiento de una API
D. Tipos de API
Hay aproximadamente cuatro tipos diferentes de API, los cuales se explicarán.
API Públicas: Una API pública o externa es un tipo de API que se hace pública y disponible para su uso por la población general. Los dueños de la API comparten sus datos y recursos con terceros, que pueden incluir organizaciones, desarrolladores y el público en general. Su propósito especial es permitir que cualquiera la use para construir, integrarla en aplicaciones o trabajar en su mejora.
Algunos ejemplos de API públicas incluyen; Bitquery, Adoptapet, covalenthq.
API Privadas:
Una API privada o API interna es un tipo de API que solo está disponible para los desarrolladores o individuos que la construyeron. Sólo se puede acceder cuando se envía una invitación del dueño(s) a la tercera parte.
Algunos ejemplos de API privadas incluyen;
APIs de socio
Una interfaz de programación de aplicaciones (API) proporcionada por una empresa o organización para permitir que desarrolladores externos o socios se comuniquen e interaccionen con sus servicios, datos o plataforma se conoce como API de socio, también conocida como API de tercero o API de desarrollador. Estas APIs están destinadas a facilitar la integración de diferentes sistemas, programas o servicios.
Las organizaciones que desean ampliar la utilidad de sus productos o servicios y fomentar la cooperación con desarrolladores externos o empresas a menudo proporcionan APIs de socio. Con la ayuda de estas APIs, los socios pueden crear programas, herramientas o servicios que utilicen datos, funciones o tecnología de la empresa.
Algunos ejemplos de APIs de socio incluyen:
API Compuestas
Las API compuestas, también conocidas como API de agregación o API de mashup, son un tipo de API que mezcla y agrega información o funcionalidad de varias API o servicios subyacentes en una sola interfaz. Estas API simplifican el proceso de integración y ofrecen una vista consolidada de varias fuentes de datos, permitiendo a los desarrolladores acceder e interactuar con diferentes servicios a través de una sola API.
Cuando los programadores necesitan recibir información continuamente o realizar varias acciones de muchas fuentes, las APIs compuestas son de gran ayuda. Una API compuesta permite a los desarrolladores enviar una solicitud única para acceder a datos o realizar acciones en varios servicios en lugar de enviar consultas separadas a cada API. El proceso de integración se optimiza, se reduce la complejidad y se incrementa la eficiencia como resultado.
Aquí hay un ejemplo de una API compuesta que agrega datos meteorológicos de varios proveedores de servicios meteorológicos:
Para agregar datos meteorológicos de estos muchos proveedores y proporcionar a los desarrolladores acceso a una sola interfaz de datos meteorológicos, se puede crear una API compuesta. Esto permite a los desarrolladores obtener información meteorológica de varias fuentes con solo una solicitud a la API.
II. Tipos de Arquitectura de APIs
A. APIs web
Las APIs web son las más comúnmente utilizadas ya que la mayoría de nuestras actividades diarias se centran en la web. Las APIs web son estándares que permiten que las cosas sean las mismas en diferentes navegadores. Se refiere a ambos lados de la comunicación. Las APIs web, comúnmente referidas como Interfaces de Programación de Aplicaciones (APIs), son interfaces ofrecidas por servicios web o aplicaciones que permiten la comunicación y interacción en línea entre ellos y otros programas de software. Los desarrolladores pueden acceder de forma programática a determinadas capacidades, servicios o datos de una aplicación web o servicio gracias a las APIs web.
1. APIs RESTful
Las APIs RESTful, que significa Representational State Transfer Application Programming Interface, es un conjunto de estándares que permiten a los ordenadores comunicarse entre sí a través de la web siguiendo los principios de diseño de la arquitectura REST (o REpresentational State Transfer).
Parte de una API REST incluye
-
Solicitud —–→ Respuesta
-
Operación – GET, POST, PATCH, UPDATE, DELETE
-
Extremo – Url
-
Parámetro/Cuerpo
-
Cabeceras
Fig 2 Diagrama de una API REST
Los principios clave de REST incluyen:
-
Arquitectura Cliente-Servidor: REST separa los componentes cliente y servidor, permitiéndoles evolucionar de manera independiente. El cliente envía solicitudes al servidor, y el servidor procesa esas solicitudes y envía respuestas en consecuencia.
-
Sin estado: REST es sin estado, lo que significa que cada solicitud del cliente al servidor debe contener toda la información necesaria para entender y procesar la solicitud. El servidor no almacena ningún contexto del cliente entre solicitudes, lo que simplifica la escalabilidad y permite un mejor caché.
-
Interfaz uniforme: REST promueve un conjunto uniforme de interfaces y operaciones, normalmente utilizando métodos HTTP estándar como GET, POST, PUT y DELETE. Cada recurso en un sistema RESTful se identifica de forma única por una URL (Uniform Resource Locator).
-
Basado en Recursos: REST considera todo como un recurso, como entidades de datos, servicios o colecciones. Cada recurso tiene un identificador único y puede ser accedido y manipulado usando métodos HTTP estándar.
-
Representación de Recursos: En REST, los recursos se representan usando un formato específico, como JSON (JavaScript Object Notation) o XML (eXtensible Markup Language). El servidor envía representaciones de recursos al cliente, que pueden incluir datos, metadatos o enlaces de hipermedia.
-
Interacciones Sin Estado: Cada solicitud enviada desde el cliente al servidor es autónoma y no depende de ninguna solicitud previa o estado en el servidor. Esto permite una mejor escalabilidad, ya que el servidor no necesita mantener información de sesión del cliente.
Beneficios de una API REST
-
Sencilla y estandarizada
-
Escalable y sin estado
-
Alto rendimiento y cacheable
2. API de SOAP
SOAP, que significa Protocolo de Acceso Simple a Objetos, es un servicio web que cumple con la especificación de servicios web SOAP. Es un protocolo de mensajería popular que utiliza XML como formato, esquemas bien definidos y un protocolo estándar de usuario. Es definido por el Consorcio World Wide Web. Los protocolos SOAP cubren una amplia gama de protocolos de comunicación en Internet, destacando HTTP, SMTP y TCP/IP.
Diagrama de una API de SOAP
Beneficios de utilizar la API de SOAP
-
El lenguaje, la plataforma y el transporte son independientes.
-
Funciona bien en entornos empresariales distribuidos.
-
Proporciona una extensibilidad significativa pre-construida en forma de las normas WS*.
-
Manejo de errores integrado.
- RPC.
El protocolo de llamada remota de procedimiento (RPC) es un medio para enviar varios parámetros y recibir resultados. Es una llamada de función remota, no existe en su máquina local pero es necesario que se despliegue desde donde se llama. Es asíncrono en que necesita obtener una respuesta para ser marcada como un éxito. Es una interacción directa entre el Cliente y el servidor. Las APIs RPC realizan operaciones operacionales o procedimientos. RPC puede utilizar dos lenguajes diferentes, JSON y XML.
Fig 4 Protocolo de RPC
GraphQL es un lenguaje de consulta para API que permite a los clientes solicitar datos específicos y modelar la respuesta según sus necesidades.
Algunos ejemplos de APIs GraphQL
API GraphQL de GitHub, API GraphQL de Shopify, API GraphQL de SpaceX, API GraphQL de Yelp, API GraphQL de Twitter (API de Twitter v2).
Comparación de protocolos de API
REST |
SOAP |
RPC |
GraphQL |
Funciona con XML, JSON, HTTP y texto plano |
Funciona con XML por diseño |
Requiere que los Usuarios sepan los nombres de Procedimientos |
Funciona con HTTP |
Funciona bien con datos |
Funciona bien con procesos (acciones) |
Parámetros específicos y órdenes |
|
Seguridad modesta |
Seguridad avanzada |
||
La documentación puede ser complementada por hipermedio |
La más difícil para los desarrolladores utilizar |
Requiere documentación extensa |
|
Los métodos de solicitud son GET, PUT, DELETE, PATCH, UPDATE. |
El método de solicitud es POST |
El método de solicitud es POST |
El método de solicitud es POST |
III. Terminología común de API
A. Endpoints
Un endpoint de API es un punto o extremo de una canal de comunicación. Cuando una API interactúa con otro sistema, los puntos de contacto de esta comunicación se llaman endpoints. En términos literales, el lugar donde las APIs envían recursos y de donde salen los recursos se denomina un endpoint. En APIs, un endpoint es típicamente una dirección uniforme de recurso (URL) que proporciona la ubicación de un recurso en el servidor.
Un ejemplo de un endpoint es
Ejemplo de endpoint de la API de Twitter
La API de Twitter expone datos sobre tweets, mensajes directos, usuarios y más.
Digamos que quieres recuperar el contenido de un tweet específico. Para esto, puedes usar el punto final de búsqueda de tweet, que tiene la URL api.twitter.com/2/tweets{id} (donde {id} es el identificador único del tweet).
B. Peticiones y respuestas
Una petición de API es un mensaje enviado del Cliente al servidor. Una petición de API es una solicitud realizada a una API para acceder o modificar datos o realizar una acción específica. Una respuesta de API es la información o datos que se devuelven en respuesta a una petición de API.
Por ejemplo, un usuario hace clic en el siguiente enlace:
<a href=’http://localhost:2400/categories/01/flavours ’>
Mostrar todos los sabores disponibles en la categoría de sabores
</a>
El mensaje de solicitud HTTP se enviará como:
GET /categories/01/flavours HTTP/1.1
Host: localhost:2400
User-Agent: Chrome/5.0 [compatible, Windows 10]
Solicitud de API
1. Copiar códigoGET https://api.com/categories/flavours
Respuesta de API
1. Copiar códigoHTTP/1.1 200 OK
2. Content-Type: application/json
3.
4. {
5. "id": 01,
6. "flavours": "Chocolate"
7. }
Podemos ver de esta solicitud que el Punto final es URL – /categories/01/flavours.
El método de solicitud es GET, la especificación de HTTP es 1.1, el dominio es localhost, el puerto es 2400, Flavours es el recurso, y el user-agent proporciona el navegador y el sistema operativo.
C. Métodos HTTP (GET, POST, PUT, DELETE)
Las APIs que utilizan el protocolo HTTP usan los métodos de solicitud HTTP (también conocidos como “verbs HTTP”) para transmitir solicitudes de cliente a servidores. Los métodos de solicitud HTTP más comúnmente usados son GET, POST, PUT y DELETE.
-
GET se utiliza por un cliente para obtener datos de un servidor,
-
PUT reemplaza datos existentes o crea datos si no existen,
-
POST se utiliza principalmente para crear nuevos recursos,
-
PATCH se utiliza para actualizar parcialmente los datos de una fuente, y
-
DELETE elimina los datos o recursos especificados por el cliente en un servidor.
D. API Seguridad – Autenticación y Autorización
Estos dos términos pueden sonar similares, pero tienen funciones diferentes. La autenticación se refiere a la verificación de usuarios o identidad, mientras que la autorización se refiere al acceso que tiene un usuario o permiso concedido para una acción. Son esenciales para la seguridad de las API, un método popular para la autenticación y autorización de usuarios es OAuth 2.0.
Diferentes tipos de autorización
Hay varios métodos para la autorización. Los siguientes son diferentes tipos de autorización de API que puede encontrarse:
-
Llaves de API
E. Las claves y tokens de API
Las claves de API son cadenas de texto que proporcionan identificación y autorización de la aplicación cliente. En otras palabras, identifican las aplicaciones que realizan llamadas al servidor y determinan si las aplicaciones que realizan las llamadas tienen acceso al servidor de API. Se utiliza para rastrear todas las actividades y bloquear cualquier comportamiento malicioso.
La autenticación de clave de API fue creada para solucionar las deficiencias de la información de inicio de sesión compartida, que es un problema principal con la autenticación básica de HTTP. Puede utilizarse para dos propósitos. El primer paso es identificar la aplicación cliente que realiza una llamada a su API backend. El segundo paso es la autorización de la aplicación cliente, que determina si la aplicación que realiza la llamada ha sido autorizada para llamar a la API.
Las claves de API se obtienen de proveedores de claves de API gestionados en una aplicación web.
Dónde almacenar las claves de API
Nunca embeda sus claves en su código o en archivos porque pueden llegar a ser públicas cuando publique en GitHub, en lugar de almacenar las claves de API en una variable de entorno.
Un ejemplo de una clave de API podría verse de la siguiente manera.
clave: a9nIbdnaoks97028Jlf.ains9NIKQMEO
Un token de acceso es una credencial de seguridad que se utiliza para autenticar y autorizar el acceso a una API (Interfaz de Programación de Aplicaciones). Los tokens son simplemente credenciales únicas para el portador del token que se le permite acceder a una API.
Aquí hay un ejemplo de un token Web Json (JWT):
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
Este es un JWT compuesto de tres partes separadas por puntos: el encabezado, el payload y la firma. El encabezado normalmente contiene información sobre el algoritmo de firma del token, por ejemplo:
{
"alg": "HS256",
"typ": "JWT"
}
El payload contiene las reclamaciones o declaraciones sobre la entidad (usuario, cliente, etc.) y puede incluir información como el sujeto, emisor, tiempo de expiración y datos personalizados. Por ejemplo:
{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
}
La firma se crea tomando el encabezado codificado, el payload y una clave secreta, y aplicando un algoritmo criptográfico, como HMAC-SHA256. La firma garantiza la integridad y autenticidad del token.
Al usar este JWT, el cliente lo incluye en el encabezado de autorización de las solicitudes a la API como este:
Autorización: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
El servidor de API puede verificar entonces la autenticidad del token, comprobar su expiración y usar la información contenida en el payload para la autorización y otros propósitos.
Tenga en cuenta que el token de ejemplo proporcionado aquí es solo para fines ilustrativos y no debe usarse en un entorno de producción.
Los tokens y las claves se utilizan ambos para la autenticación y la autorización, sin embargo, difieren en las siguientes maneras:
Las claves de API se utilizan generalmente para la identificación y autenticación del cliente o de la aplicación al visitar una API. Frecuentemente adoptan la forma de strings aleatorios y largos que actúan como credenciales. Los tokens, por otro lado, se dan a los clientes o usuarios autorizados después de un proceso de autenticación exitoso y sirven como prueba de autenticación.
Duración de vida: A menos que el proveedor de la API la revoque o cambie deliberadamente, las claves de API generalmente tienen una longeva duración de vida. Los tokens, por otro lado, frecuentemente tienen una corta duración de vida y una fecha de expiración. Dependiendo de la técnica de autenticación, el cliente debe reautenticarse o usar un token de actualización para obtener un nuevo token una vez que expire el viejo.
Seguridad: Los tokens generalmente ofrecen mejores características de seguridad en comparación con las keys de API. Los tokens pueden diseñarse para tener escopos o permisos limitados, permitiendo un control de acceso más fino. También pueden estar encryptados, firmados o contener reclamaciones adicionales que proporcionan integridad y autenticidad. Esto permite una autenticación más segura y una mejor protección de datos sensibles.
Ejemplos y Casos de Uso Reales
A. API de Clima
Las APIs de clima, o Interfaces de Programación de Aplicaciones, son servicios que proporcionan acceso en tiempo real a datos meteorológicos y pronósticos.
Ejemplos incluyen
. WeatherAPI.com, Forecast, Meteostat.
B. API de Medios Sociales
Las APIs de redes sociales permiten a estas plataformas integrarse con otros proveedores de software y aplicaciones.
Ejemplos incluyen
C. API de gateway de pago
La interfaz tecnológica que permite a los desarrolladores de software integrar servicios de gateway de pago en sus aplicaciones o sitios web se denomina API de gateway de pago.
Ejemplos incluyen
API de Stripe. Stripe es un destacado servicio que permite a los vendedores aceptar pagos en línea, Noodlio Pay, API de Square, PayPal, Adyen, Paybook, KeyPay, BIPS Factura (por Coinify).
D. API de Mapeo y Geolocalización
La API de Geolocalización no conserva ninguna información, sino que permite recopilar datos existentes del dispositivo que se está consultando. Puede recopilar datos de posición de diferentes fuentes, incluyendo la dirección IP, GPS, WiFi, Bluetooth, RFID, ID de GSM/CDMA y entrada humana.
Algunos ejemplos son Geolocation API, Mapbox API, OpenStreetMap API, MapQuest API, HERE API.
IV. Conclusión y Take Home
A lo largo de este artículo se ha establecido qué son las APIs, cómo funcionan, ejemplos reales, APISecurity, métodos HTTP y la importancia de las APIs. Se ha deducido que las API permiten a los ingenieros de software integrar aplicaciones en lo que se está construyendo e incluso mejorarlo. En el curso de mi investigación y escritura, descubrí que un gran problema es la seguridad de las API. Si hay una API es hackeado que afectará a todas las aplicaciones que se conectan a ella por lo que me gustaría profundizar mi investigación sobre API Security.
Por último, voy a estar publicando otro artículo en relación con esto, ya que será en la exploración de las API, el trabajo con las API en los códigos, las mejores prácticas de la API, el diseño de la API y development.
A. Algunas palabras clave
API – Application User Interface
RPC – Remote Procedural Call
HTTP – Hypertext Transfer Protocol
B. Próximos pasos para seguir aprendiendo
Finalmente, lanzaré otro artículo sobre este tema, ya que será sobre explorar APIs, trabajar con APIs en código, mejores prácticas de API, diseño y desarrollo de API.