Antes de aprender a desarrollar software, API sonaba como una especie de cerveza.

Hoy en día utilizo el término tan a menudo que, de hecho, recientemente he intentado pedir un API en un bar.

La respuesta del barman fue lanzar un 404: recurso no encontrado.

Conocí a mucha gente, tanto de la industria tecnológica como de otros sectores, que tiene una idea bastante vaga o incorrecta sobre lo que significa este término tan común.

Técnicamente, API significa Interfaz de Programación de Aplicaciones (Application Programming Interface). En algún momento u otro, la mayoría de las grandes empresas han creado un API para sus clientes o para uso interno.

Pero, ¿Cómo se explica API en un Español simple? ¿Existe un significado más amplio que el que se utiliza en el desarrollo y en los negocios? En primer lugar, retrocedamos y veamos cómo funciona la propia web.

WWW y los servidores remotos

Cuando pienso en la Web, me imagino una gran red de servidores conectados.

Cada página de Internet está almacenada en algún lugar de un servidor remoto. Un servidor remoto no es tan místico después de todo — es sólo una parte de una computadora remota que está optimizada para procesar peticiones.

Para poner las cosas en perspectiva, puedes levantar un servidor en tu laptop capaz de servir un sitio web entero a la Web (de hecho, un servidor local es lo que los ingenieros utilizan para desarrollar sitios web antes de liberarlos al público).

Cuando escribes www.facebook.com en tu navegador, se envía una petición al servidor remoto de Facebook. Una vez que tu navegador recibe la respuesta, interpreta el código y muestra la página.

Para el navegador, también conocido como el cliente, el servidor de Facebook es un API. Esto significa que cada vez que visitas una página en la Web, interactúas con la API de algún servidor remoto.

Un API no es lo mismo que el servidor remoto — sino que es la parte del servidor que recibe las solicitudes y envía las respuestas.

Las APIs como una forma de servir a tus clientes

Probablemente has oído hablar de empresas que empaquetan las APIs como productos. Por ejemplo, Weather Underground vende acceso a su API de datos meteorológicos.

Ejemplo: El sitio web de tu pequeña empresa tiene un formulario que se utiliza para inscribir clientes a sus citas. Quieres dar a tus clientes la posibilidad de crear automáticamente un evento de calendario de Google con los detalles de esa cita.d

Uso del API: La idea es que el servidor de tu página web hable directamente con el servidor de Google con una petición para crear un evento con los detalles datos. Tu servidor recibiría entonces la respuesta de Google, la procesaría y enviaría información relevante al navegador, como un mensaje de confirmación al usuario.

De forma alternativa, el navegador puede enviar a menudo una solicitud de API directamente al servidor de Google sin tener que pasar por tu servidor.

¿En qué se diferencia la API de Google Calendar de la API de cualquier otro servidor remoto?

En término técnicos, la diferencia es el formato de la solicitud y la respuesta.

Para mostrar toda la página web, tu navegador espera una respuesta en HTML, que contiene código de presentación, mientras que la llamada al API de Google Calendar sólo devolvería los datos — probablemente en un formato como JSON.

Si el servidor de tu sitio web hace la solicitud del API, entonces el servidor de tu sitio web es el cliente (de manera similar a como tu navegador es el cliente cuando lo utilizas para navegar a un sitio web).

Desde la perspectiva de los usuarios, las APIs les permiten completar la acción sin salir de tu sitio web.

La mayoría de los sitios web modernos consumen al menos algunas APIs de terceros.

Muchos problemas ya tienen una solución de terceros, ya sea en forma de librería o servicio. A menudo es más fácil y más fiable utilizar una solución existente.

No es raro que los equipos de desarrollo dividan su aplicación en varios servidores que se comunican entre sí a través de las APIs. Los servidores que realizan funciones de ayuda para el servidor principal de la aplicación se denominan comúnmente como microservicios.

En resumen, cuando una empresa ofrece un API a sus clientes, sólo significa que ha construido un conjunto de URLs dedicadas que devuelven respuestas de datos puros — lo que significa que las respuestas no contendrán el tipo de sobrecarga de presentación que se esperaría en una interfaz gráfica como un sitio web.

¿Puedes hacer estas solicitudes con tu navegador? A menudo, sí. Dado que la transmisión HTTP ocurre en texto, tu navegador siempre hará lo mejor que pueda para mostrar la respuesta.

Por ejemplo, puedes acceder al API de GitHub directamente con tu navegador sin necesidad de un token de acceso. Aquí tienes la respuesta JSON que obtienes cuando visitas la ruta API de un usuario de GitHub en tu navegador (https://api.github.com/users/petrgazarov):

{  "login": "petrgazarov",  "id": 5581195,  "avatar_url": "https://avatars.githubusercontent.com/u/5581195?v=3",  "gravatar_id": "",  "url": "https://api.github.com/users/petrgazarov",  "html_url": "https://github.com/petrgazarov",  "followers_url": "https://api.github.com/users/petrgazarov/followers",  "following_url": "https://api.github.com/users/petrgazarov/following{/other_user}",  "gists_url": "https://api.github.com/users/petrgazarov/gists{/gist_id}",  "starred_url": "https://api.github.com/users/petrgazarov/starred{/owner}{/repo}",  "subscriptions_url": "https://api.github.com/users/petrgazarov/subscriptions",  "organizations_url": "https://api.github.com/users/petrgazarov/orgs",  "repos_url": "https://api.github.com/users/petrgazarov/repos",  "events_url": "https://api.github.com/users/petrgazarov/events{/privacy}",  "received_events_url": "https://api.github.com/users/petrgazarov/received_events",  "type": "User",  "site_admin": false,  "name": "Petr Gazarov",  "company": "PolicyGenius",  "blog": "http://petrgazarov.com/",  "location": "NYC",  "email": "petrgazarov@gmail.com",  "hireable": null,  "bio": null,  "public_repos": 23,  "public_gists": 0,  "followers": 7,  "following": 14,  "created_at": "2013-10-01T00:33:23Z",  "updated_at": "2016-08-02T05:44:01Z"}

El navegador parece haber hecho bien en mostrar una respuesta JSON. Una respuesta JSON como esta está lista para ser usada en tu código. Es fácil extraer datos de este texto. Entonces puedes hacer lo que quieras con los datos.

A es de “Aplicación”

Para cerrar, vamos a añadir un par de ejemplos más de APIs..

"Aplicación" puede referirse a muchas cosas. Aquí hay algunos de ellos en el contexto de la API:

  1. Una pieza de software con una función distinta.
  2. Todo el servidor, toda la aplicación o sólo una pequeña parte de una aplicación

Básicamente, cualquier pieza de software que se pueda separar de forma distintiva de su entorno, puede ser una "A" en la API, y probablemente también tendrá algún tipo de API.

Digamos que estás usando una librería de terceros en tu código. Una vez incorporada a tu código, una librería se convierte en parte de tu aplicación general. Al ser una pieza de software distinta, la librería probablemente tenga una API que te permita interactuar con el resto de tu código.

Aquí tienes otro ejemplo: En el Diseño Orientado a Objetos, el código se organiza en objetos. Tu aplicación puede tener cientos de objetos definidos que pueden interactuar entre sí.

Cada objeto tiene un API: un conjunto de métodos y propiedades públicas que utiliza para interactuar con otros objetos de tu aplicación.

Un objeto también puede tener una lógica interna que es privada, lo que significa que está oculto al ámbito exterior (y no una API).

De lo que hemos cubierto, espero que elimine el significado más amplio de API, así como los usos más comunes del término hoy en día.

Traducido del artículo de Petr Gazarov - What is an API? In English, please