¿Qué es una API?

API no es más que un acrónimo para Application Programming Interface o bueno, en su traducción al español Interfaz de Programación de Aplicaciones.

En términos simples, una API proporciona un medio por el cual acceder a una funcionalidad de determinada aplicación, dicha funcionalidad usualmente se encuentra dentro de la creación, lectura, actualización y destrucción de contenido -CRUD- aunque esto puede variar.

Usualmente las APIs públicas solamente permiten lectura, es decir, tipos de peticiones GET.

¿Peticiones GET?

Recuerda que hacemos uso del protocolo HTTP ideado por Tim Berners Lee por allá en el año 1989 (el mismo año del lanzamiento del Game Boy de Nintendo). Este protocolo ha tenido varias versiones con las cuales se ha ido añadiendo funcionalidades al mismo.

HTTP define varios métodos, en su versión 1.0 existían GET, POST y HEAD. Posteriormente en la versión 1.1 fueron implementados los métodos OPTIONS, PUT, DELETE, TRACE y CONNECT.

En simples palabras, estos son los más utilizados:

  • GET pide información.
  • POST crea información.
  • PUT actualiza información.
  • DELETE ¿adivinas?.

La versión más actual de HTTP es HTTP/2, creada originalmente por Google y soportada por la mayoría de navegadores actualmente. Si bien la mayor parte de la sintaxis como métodos, headers, códigos de estado y URIs se mantienen igual, la manera en la cual la información es encapsulada y transportada entre cliente y servidor ha cambiado, pero eso será cuento para otro tiempo.

Volviendo al tema

Podrías pensar que acabamos de finalizar la clase teórica y continuamos con la práctica, así que vamos a jugar un poco.

Si bien la manera en la cual hacemos peticiones HTTP varia dependiendo del lenguaje, utilizaremos JavaScript y JS Bin así que adelante, abre la página en una nueva pestaña.

Hasta hace poco JavaScript no contaba con una API (es curioso que se llame así) que permitiera peticiones HTTP, hace no mucho fue implementado fetch y es soportado por navegadores modernos, así que si aún usas Internet Explorer o Netscape quizás desees usar un navegador actual por un rato.

Ahora, que comience el juego:

fetch recibe como primer argumento una dirección, en nuestro caso utilizaremos la API de la NASA para jugar, asegúrate de obtener una key en este enlace, usualmente se ve algo como 893jCuk7GiVk0X8AdascxIQA7CFalpoq2NH.

¡Genial! Ahora podemos usar uno de los endpoints disponibles, en nuestro caso, haremos uso del endpoint de asteroides, el cual nos retornará una lista de asteroides basado en la fecha de aproximación más cerca de estos a la Tierra.

¿Recuerdas la pestaña de JS Bin? Hora de que comencemos.

const url = 'https://api.nasa.gov/neo/rest/v1/feed?&api_key=TU_KEY'

Definimos la url a la que haremos la petición y ahora podemos jugar con fetch.

const url = 'https://api.nasa.gov/neo/rest/v1/feed?&api_key=TU_KEY'

fetch(url)
    .then(res => res.json())
    .then(data => console.log(data))

Sí, ahora mismo estas así:

https://imgflip.com/s/meme/Jackie-Chan-WTF.jpg

No te preocupes, vamos a ver qué pasó.

  1. Usamos fetch pasando como argumento la url que habíamos definido antes.
  2. Recibimos la información y la convertimos en JSON (un formato muy utilizado actualmente).
  3. Cogemos esa información y la imprimimos en la consola.

En caso de que no estés familiarizado con las funciones flecha => básicamente nos ahorran el trabajo de escribir todo esto (entre otras cosillas):

function(data) {
    console.log(data)
}

Si viste tu consola en JS Bin, podrás observar que hay mucha información con la cual jugar allí, el diámetro de los asteroides, cuando se acercaran a la Tierra y mucho más. El cómo la uses depende de ti, puedes crear un juego con ella, utilizarla en una aplicación, usarla como datos estadísticos, tu imaginación es el límite.

Eso es todo por hoy, en un futuro veremos como usar esta información en aplicaciones reales.