¿Qué es una API? En inglés por favor.

Ilustraciones de Phillip Blackowl . Traducción Española. Traducción portuguesa

Antes de aprender a desarrollar software, API sonaba como un tipo de cerveza.

Hoy uso el término tan a menudo que, de hecho, recientemente he intentado ordenar una API en una barra.

La respuesta del cantinero fue arrojar un 404: recurso no encontrado.

Conozco a mucha gente, tanto en tecnología como en otros lugares, que tienen una idea bastante vaga o incorrecta sobre lo que significa este término bastante común.

Técnicamente, API significa Application Programming Interface . En algún momento u otro, la mayoría de las grandes compañías han creado API para sus clientes o para uso interno.

¿Pero cómo explica API en inglés simple? ¿Y hay un significado más amplio que el utilizado en el desarrollo y los negocios? Primero, retrocedamos y veamos cómo funciona la web en sí misma.

WWW y servidores remotos

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

Cada página en Internet se almacena en algún lugar en un servidor remoto. Un servidor remoto no es tan místico, después de todo, es solo una parte de una computadora ubicada remotamente que está optimizada para procesar las solicitudes.

Para poner las cosas en perspectiva, puede activar un servidor en su computadora portátil capaz de servir un sitio web completo a la Web (de hecho, un servidor local es lo que los ingenieros utilizan para desarrollar sitios web antes de lanzarlos al público).

Cuando ingresa www.facebook.com en su navegador, se envía una solicitud al servidor remoto de Facebook. Una vez que su 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 una API. Esto significa que cada vez que visita una página en la Web, interactúa con la API de algún servidor remoto.

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

APIs como una forma de servir a sus clientes

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

Escenario de ejemplo: el sitio web de su pequeña empresa tiene un formulario utilizado para suscribir clientes. Desea dar a sus clientes la capacidad de crear automáticamente un evento de calendario de Google con los detalles para esa cita.

Uso de API: la idea es que el servidor de su sitio web hable directamente con el servidor de Google con una solicitud para crear un evento con los detalles especificados. Luego, su servidor recibirá la respuesta de Google, la procesará y enviará información relevante al navegador, como un mensaje de confirmación para el usuario.

Alternativamente, su navegador a menudo puede enviar una solicitud de API directamente al servidor de Google sin pasar por su servidor.

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

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

Para representar toda la página web, su navegador espera una respuesta en HTML, que contiene un código de presentación, mientras que la llamada API de Google Calendar simplemente devolverá los datos, probablemente en un formato como JSON .

Si el servidor de su sitio web realiza la solicitud de API, entonces el servidor de su sitio web es el cliente (similar a que su navegador sea el cliente cuando lo usa para navegar a un sitio web).

Desde la perspectiva de los usuarios, las API les permiten completar la acción sin abandonar su sitio web.

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

Muchos problemas ya tienen una solución de terceros, ya sea en forma de biblioteca o servicio. A menudo es más fácil y más confiable usar 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 API. Los servidores que realizan funciones auxiliares para el servidor de aplicaciones principal se conocen comúnmente como microservicios .

En resumen, cuando una empresa ofrece una API a sus clientes, simplemente significa que han creado un conjunto de URL dedicadas que devuelven respuestas de datos puras, lo que significa que las respuestas no contendrán el tipo de sobrecarga de presentación que esperaría en una interfaz gráfica de usuario como un sitio web .

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

Por ejemplo, puedes acceder a la API de GitHub directamente con tu navegador sin necesidad de un token de acceso. Aquí está la respuesta JSON que recibe cuando visita la ruta API de un usuario de GitHub en su navegador ( https://api.github.com/users/petrgazarov ):

 { 
"iniciar sesión": "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",
"tipo": "Usuario",
"site_admin": falso,
"nombre": "Petr Gazarov",
"empresa": "PolicyGenius",
"blog": "http://petrgazarov.com/",
"ubicación": "NYC",
"correo electrónico": "petrgazarov@gmail.com",
"alquilable": nulo,
"bio": nulo,
"public_repos": 23,
"public_gists": 0,
"seguidores": 7,
"siguiente": 14,
"created_at": "2013-10-01T00: 33: 23Z",
"updated_at": "2016-08-02T05: 44: 01Z"
}

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

A es para "Aplicación"

Para cerrar, veamos un par de ejemplos más de API.

La "aplicación" puede referirse a muchas cosas. Estos son algunos de ellos en el contexto de API:

  1. Una pieza de software con una función distinta.
  2. El servidor completo, toda la aplicación o solo una pequeña parte de una aplicación.

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

Supongamos que está utilizando una biblioteca de terceros en su código. Una vez incorporado en su código, una biblioteca se convierte en parte de su aplicación general. Al tratarse de una pieza de software distinta, es probable que la biblioteca tenga una API que le permita interactuar con el resto de su código.

Aquí hay otro ejemplo: en Object Oriented Design , el código está organizado en objetos. Su aplicación puede tener cientos de objetos definidos que pueden interactuar entre sí.

Cada objeto tiene una API: un conjunto de métodos y propiedades públicos que usa para interactuar con otros objetos en su aplicación.

Un objeto también puede tener una lógica interna que es privada, lo que significa que es oculto desde el ámbito externo (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 en la actualidad.