Para entender el concepto de una API o Interfaz de Programación de Aplicaciones podemos comenzar con un pequeño ejemplo:
Si quisiéramos crear una aplicación como la de Uber, uno de los componentes principales para su desarrollo serían los mapas, y para ello se necesitarían muchos recursos para desarrollarla desde cero.
Google ha invertido cantidades gigantescas de dinero y años de desarrollo en Google Maps, a través de imágenes satelitales, automóviles sin conductor, entre otros. Todo ese desarrollo podemos aprovecharlo y utilizar la información de Google a través de sus APIpara nuestra aplicación.
Hacer que tu aplicación pueda conectarse con otros programas o aplicaciones, le da mucho más valor y poder, que una simple aplicación aislada. Ese, es el concepto de API.
¿En sí, qué es una API?
Ahora sí, detallemos qué es una API y para qué nos sirve. Cada vez se hacen más presentes estas siglas, que hacen referencia a las reglas y procesos necesarios para la intercomunicación entre aplicaciones.
Una API es un conjunto de reglas (código) y especificaciones que las aplicaciones pueden seguir para comunicarse entre ellas, sirviendo como un canal de comunicación entre programas diferentes de la misma manera en que la interfaz de usuario facilita la interacción humano-software.
Las API pueden servir para comunicarse con el sistema operativo (WinAPI), con bases de datos (DBMS) o con protocolos de comunicaciones (Jabber/XMPP). En los últimos años se han sumado múltiples redes sociales (Twitter, Facebook, Youtube, Flickr, LinkedIn, etc) y otras plataformas online (Google Maps, WordPress), lo que ha convertido el social media marketing en algo más sencillo, más rastreable y por lo tanto, más rentable.
Aspectos técnicos de interfaces.
Una Interfaz es una capa de abstracción para que dos sistemas puedan comunicarse. Ésta permite que interactúes con un sistema, sin la necesidad de saber qué está sucediendo por detrás.
Por ejemplo, en el caso de un formulario de log in, lo primero que hacemos es escribir nuestra cuenta de usuario y la contraseña, hacer click en iniciar sesión e ingresamos. No necesitas saber qué está pasando por detrás, eso es una interfaz.
Hablemos de API. Application Programming Interface: es decir, una interfaz que permite la comunicación entre aplicaciones y programas de software para que puedan compartir datos entre sí.
Tipos de API.
En esta ocasión nos centraremos en las API locales y remotas, si bien no son las únicas que existen, son las más utilizadas actualmente.
Las API locales son las que se ejecutan en un mismo entorno. Por ejemplo, en el desarrollo de una aplicación móvil necesitas hacer que una notificación vibre, para hacer esto posible es necesario conectarnos con la API de vibración del teléfono móvil. Todo esto ocurre en el mismo entorno ya que se ejecutan en el mismo lugar.
Con las API remotas consumes datos de una app que se encuentra en otro lugar del mundo, sin tener que estar en el mismo entorno. Este tipo de API pueden utilizar servicios web y así usar el protocolo SOAP y la arquitectura REST.i
El protocolo SOAP fue el más utilizado en sus tiempos, actualmente ya no es muy común su uso, pero no ha quedado obsoleto y se sigue utilizando. La arquitectura REST por el contrario, es la más usada actualmente en el diseño de arquitectura de una API.
Métodos HTTP con Swagger Io.
Generalmente, las API no cuentan con un estándar de diseño común y ni si quiera existen unos parámetros comunes para documentarlas. Uno de los mayores problemas de las API es que en muchos casos, la documentación que les acompaña es inútil.
Entonces, ¿qué pasa cuando dos personas no hablan un mismo idioma? Obviamente no se pueden comunicar y lo mismo ocurre con las API que no comparten un idioma común en demasiadas ocasiones por aquellos inconvenientes. Swagger, que es un software que nos ayuda a los desarrolladores a diseñar, crear y documentar API, trabaja para solucionarlo.
Para ver esto de una forma más clara, puedes ingresar a la documentación de Swagger y entender cómo está estructurado el código de cada uno de los métodos.
Si alguna vez has creado formularios HTML, estarás familiarizado con dos de los métodos HTTP más importantes: GET
y POST
. Sin embargo, hay muchos más métodos HTTP disponibles. Los más importantes para la creación de API REST son GET
, POST
, PUT
y DELETE
. Otros métodos están disponibles, como HEAD
y OPTIONS
, pero son más raros (si quieres saber sobre todos los demás métodos HTTP, la fuente oficial es IETF).
Aquí te comparto un ejemplo del método POST con Swagger, para un registro de usuario.
paths:
/signUp:
post:
description: Haz un registro para un usuario nuevo.
requestBody:
content:
application/x-www-form-urlencoded:
schema:
type: object
properties:
email:
type: string
password:
type: string
token:
type: string
deviceType:
type: string
tokenNotification:
type: string
deviceName:
type: string
lang:
type: string
responses:
'200':
description: El registro se ha realizado con éxito
schema:
$ref: "#/definitions/GetDeviceResponse"
'504':
description: Usuario no autorizado
schema:
$ref: "#/definitions/ErrorResponse"
Cada solicitud especifica un cierto verbo o método HTTP en el encabezado de la solicitud.
Buenas prácticas con las API.
Seguridad: como hemos visto, tenemos API’s públicas y privadas. Si es privada debemos protegerla o de lo contrario alguien podría entrar a nuestra información, obtener la base de datos de tus usuarios y manipular dicha información, lo cual es muy riesgoso.
Testear: Probar que todo funcione correctamente. Como desarrolladores podemos encontrarnos con ciertas anomalías cuando intentamos obtener información de una API mal documentada. Es molesto y tedioso para la persona que va a consumir una API, no encontrar la información debida o que no funciona como debería. El testeo está muy ligado a la documentación.
Documentar: Cuando creamos una API la estamos haciendo para que alguien más pueda consumirla. Ya que es una interfaz de comunicación, no tiene sentido hacerla si nadie la va a consumir.
Es muy laborioso trabajar con una API mal documentada, por ello, haz tu mayor esfuerzo para compartir la información de tus API de manera legible y ordenada con buena documentación.
Comienza a implementar API en tus proyectos o crea las propias para alimentar tus proyectos o los de otros. En Comunidad TX te damos esta pequeña introducción a los diferentes métodos y tipos de API que existen para encontrar el que se adecue mejor a tus proyectos.
Comparte tus avances con nosotros en nuestro grupo de Facebook. 😁