¿Qué diablos es una API?

Mar 20 2023
Por qué usar API en tu código es como jugar con LEGO. Es posible que haya escuchado el término "API" en la mayoría de los tutoriales de codificación que ha leído.

Por qué usar API en tu código es como jugar con LEGO.

Foto de Xavi Cabrera en Unsplash

Es posible que haya escuchado el término "API" en la mayoría de los tutoriales de codificación que ha leído. Si busca en Google "API", obtendrá un gran párrafo sobre cómo significa "Interfaz de programación de aplicaciones" y una explicación sobre "REST" y "protocolos", etc., como si eso lo aclarara.

Todo lo que necesita saber sobre las API es que son una lista de funciones que puede usar para automatizar tareas y obtener datos . Por ejemplo, puedes:

  • Use la API de Gmail para automatizar la lectura y el filtrado de su bandeja de entrada con código
  • Use la API de Reddit para crear un bot que convierta automáticamente unidades métricas a imperiales con código
  • Use la API de Fitbit para obtener datos de su Fitbit y enviarlos a una aplicación personalizada en su teléfono
  • Cómo podríamos usar una API para un foro como Reddit. Foto original de Xavi Cabrera en Unsplash
Sitio y catálogo Pick a Brick de LEGO.

Del mismo modo, las API proporcionan pequeñas piezas de código que le permiten crear programas. Tienen funciones como:

  • getLikeCount()
  • createGoogleSheet()
  • sendEmail()

¿Cómo sabemos cuáles son estas "piezas de código"?

Cada API viene con documentación que enumera todas las formas en que puede usarla, como un catálogo de LEGO. Le muestra todas las cosas que puede hacer con una API, que para la API de Reddit podría ser "publicar un comentario" o "guardar una publicación". La documentación a menudo se encuentra en línea en el sitio web de una empresa, generalmente en alguna página de desarrollador oculta. Las " cosas que puede hacer" se denominan "métodos API".

La API de Slack tiene una documentación ingeniosa.

Cierta documentación es mejor que otra , pero la documentación es, en última instancia, una lista de piezas de código y funciones prefabricadas que puede usar en su propio código .

La API más fácil: obtener su dirección IP

Veamos una API que solo tiene una pieza: la API de IPify , que te dice cuál es tu dirección IP.

Una dirección IP es como un número de teléfono o una dirección postal para su computadora. Le dice a Internet dónde encontrarte. Los sitios web también tienen sus propias direcciones IP.

Vamos a enviar un comando a IPify.org y preguntarle cuál es nuestra dirección IP. Esto funciona tanto en Mac OS como en Windows.

Abra Terminal (Mac) o Símbolo del sistema (Windows) y escriba lo siguiente:

curl 'https://api.ipify.org?format=json'

      
                
What the command looks like in Terminal on a MacBook.

{"ip": "68.142.10.250"}

Para verificar que esta es su IP real, visite WhatIsMyIPAddress.com .

JSON es uno de los formatos de datos más populares para las API web modernas. Pone todo en {“key”: value}formato para que todos los datos tengan una etiqueta. Otras API pueden usar XML , que tiene un formato similar <Key>value</Key>, y muchas API le permiten elegir entre las dos.

Esta es la esencia de muchas API web. Le pedimos a un sitio web algunos datos y responde con esos datos. Las API comunes en la investigación científica, como las API de la NASA , USGS y USFDA , funcionan de esta manera. Podemos obtener datos sobre satélites espaciales, la elevación de las montañas en los EE. UU. y la lista de medicamentos aprobados por la FDA si solo los solicitamos.

¿Qué pasa con la automatización de la actividad del usuario?

¿Qué pasa si no queremos simplemente obtener datos de un sitio web? ¿Qué tal hacer bots o automatizar nuestra jornada laboral?

Aquí es donde entran las API más complicadas. Todavía involucran comandos singulares en los que hablamos con un sitio web o una aplicación y decimos: "Quiero obtener estos datos (o enviar estos datos)". Y la aplicación responde en consecuencia. Pero ahora estamos juntando varios comandos para realizar actividades más sofisticadas.

Foto de Aedrian en Unsplash

Un ejemplo de varios pasos: la API de Reddit

Reddit es el foro en línea más grande del mundo. Reddit publica su API en línea y enumera todo lo que puede hacer con su API en la barra lateral de la izquierda.

Una descripción general de la API de Reddit. Los sitios web más populares tendrán una página API (algo oculta).

En la barra lateral están los métodos que podemos usar para obtener nuestra lista de amigos, karma, trofeos y más. Cada acción que un usuario puede realizar en el sitio web tiene su propio método API correspondiente.

Si visitamos la página de la API de Reddit y nos desplazamos hacia abajo, hay una sección, enlaces y comentarios , que muestra todas las interacciones normales del usuario y sus métodos API correspondientes. Podríamos usarlos para crear una cuenta de bot o algo similar.

Una lista de cosas que podemos hacer de manera automatizada si usamos la API de Reddit.

Tenemos interacciones diarias con los usuarios, como comentar ( /api/comment), seguir y guardar publicaciones . La API de Reddit hace posible hacer esto con código. El /api/prefijo en todos los métodos parece extraño, pero lo explicaremos en un minuto.

La API de búsqueda de Google , por el contrario, solo tiene un método y es buscar :

Una explicación del método de "lista" (básicamente "búsqueda") de la API de búsqueda de Google.

La API de búsqueda de Google es simple, porque Google sabe que solo hay una cosa que a los programadores les importa hacer con la Búsqueda de Google: buscar.

Este es el objetivo de cada API, reducir todas las actividades y opciones del sitio web o la aplicación normal en este tipo de funciones listas para el código de "una sola línea" que podemos usar desde Python, JavaScript, Bash, Java, R, etc. .

  • La API de un sitio web quiere que pueda realizar interacciones de usuario normales (iniciar sesión, comentar, buscar, eliminar cosas) con la menor cantidad de código posible
  • Una API portátil quiere que pueda capturar datos, enviar una alerta al usuario o cambiar la configuración en el dispositivo portátil con la menor cantidad de código posible.
Si este automóvil tuviera una API, tendría un atributo de "neumático" y un método de "conducir ()". Foto de Eric y Niklas en Unsplash

Cómo se ve el uso de una API en el código

Entonces, ¿cómo se ve esto en el código? La API de Reddit dice que el método de comentarios se llama /api/comment. ¿Qué significa eso? No podemos simplemente poner /api/commentun archivo de Python y dar por terminado el día, ¿verdad? Bien.

Hay algunas diferencias entre usar una API para comunicarse con un sitio web y usar la API de un dispositivo portátil. Ambos siguen siendo similares a LEGO en el sentido de que te permiten hacer cosas complejas con unas pocas líneas de código, pero el código en sí se ve bastante diferente. Por lo tanto, proporcionaremos ejemplos separados para ellos.

Más en profundidad: API web en código

Vimos que los métodos de la API de Reddit se enumeran con un montón de barras:

Eso no se parece en nada a Python, JavaScript o código. dice /api/? ¿Qué es eso?

Estos son en realidad partes de enlaces HTTP , como los que escribes en Chrome o Firefox.

¿Por qué los enlaces web? ¿Los ponemos directamente en nuestro código? Sí, y por una buena razón.

Cuando usamos una API web, como la de Reddit, Gmail o incluso las API de los NIH o la NASA , nuestro código básicamente se comunica con un sitio web. Los sitios web utilizan links/that/look/like/thispara separar sus páginas y funciones. Google vive en google.com, pero sus resultados de búsqueda viven en google.com/search.

Terminaremos poniendo ese punto final en nuestro código en algún lugar como este:

google_search_api = "https://www.googleapis.com/customsearch/"

Ahora, el código no está realmente hablando con un sitio web sino con un servidor (como un sitio web sin cabeza), pero organizan las cosas de la misma manera con /slashes/, en lo que respecta a las API. Al igual que cuando publica un blog como un usuario normal en un sitio web desde la página website.com/post, su código puede comunicarse con el punto final de publicación del blog del servidor API en api.website.com/posto website.com/api/postsimilar.

Foto de Caspar Camille Rubin en Unsplash

Piénselo de esta manera: cuando revise su bandeja de entrada de Gmail en su computadora portátil o teléfono, su navegador hará lo siguiente:

  1. Llegar a través de Internet paragmail.com
  2. Dígale a gmail.com, "¿Puedo obtener la página web debajo de /mail/inbox?"
  3. Luego, Gmail envía la página web de su bandeja de entrada a su navegador, para que pueda verla.
  1. Alcanzargmail.googleapis.com
  2. Pide gmail.googleapis.comtu bandeja de entrada de correo electrónico
  3. Luego, la API de Gmail enviará solo los datos en lugar de todo el sitio web.

Los datos puros son amigables con el código, y para eso están hechas las API.

Ejemplo: Obtención de medicamentos de la API de openFDA

Aquí hay un breve ejemplo de Python para consultar la API openFDA de la USFDA , que enumera todos los medicamentos aprobados por la FDA:

# import an HTTP library
import requests

# Tell "requests" to request data from the openFDA "Drugs" endpoint
drugs_http_endpoint = "https://api.fda.gov/drug/label.json?limit=100"
drugs = requests.get(drugs_http_endpoint)

# Print all the data that we got from USFDA about drugs
print(drugs.json())

Nota: el ejemplo anterior usa la popular requests biblioteca HTTP para Python.

¿Qué pasa con las API para Bluetooth y dispositivos portátiles?

El uso de la API de un dispositivo portátil (como Fitbit o Apple Watch) es un poco diferente al uso de la API de un sitio web, pero están documentados de la misma manera. Por ejemplo, en lugar de un método de "comentario" , una API portátil podría tener los siguientes métodos:

  • obtener la frecuencia cardíaca
  • obtener datos de movimiento (del acelerómetro y giroscopio)
  • enviar al usuario una alerta

Ejemplo portátil: la API de Fitbit

En lugar de consultar algún sitio web para obtener datos, es posible que desee codificar para un dispositivo específico, como Fitbit .

Los Fitbits son dispositivos portátiles que rastrean tu ejercicio, frecuencia cardíaca y más. Foto de Shane en Unsplash

Hay varias piezas en la API de Fitbit . Incluso tiene su propia API web.

La API de Fitbit tiene varias piezas: la API del dispositivo, la API de configuración, la API complementaria y la API web.

Veamos una de las partes de la API del dispositivo .

En la página de la API del dispositivo , la barra lateral izquierda muestra una lista de todas las piezas de la API con las que podemos interactuar.

Cada una de estas categorías más grandes es una especie de colección de piezas de LEGO , sobre cuyas piezas podemos leer más y luego usarlas en nuestro propio código. Las piezas de LEGO son cosas como:

  • leer o poner en hora el reloj
  • lectura del acelerómetro (parte del rastreador de movimiento)
  • lectura del pulsómetro , etc.

Hay mucha información, pero la página tiene un breve script de ejemplo y luego enumera un montón de piezas de LEGO relacionadas con la frecuencia cardíaca que podemos usar en nuestro propio código:

  • activated(nos dice si el sensor de frecuencia cardíaca está encendido o no)
  • heartRate(nos dice la frecuencia cardíaca actual)
  • onactivate(una función que podemos usar para decirle al Fitbit qué hacer tan pronto como se active el sensor de frecuencia cardíaca)

En pseudocódigo, lo anterior significa:

import HeartRateSensor code from Fitbit's API

if HeartRateSensor was imported {
    hrm = the HeartRateSensor
    
    Listen for heart rate sensor to send data, then print it.

    Start the heart rate sensor (which will then start the above "Listen" code)
}

Este niño sabe cómo leer la documentación de la API. Foto de Kelly Sikkema en Unsplash

Si te quedas atascado mientras usas una API, la empresa que la fabricó normalmente tendrá documentación en línea que puedes buscar en Google. (Ejemplo: la búsqueda de "API de Fitbit" mostrará la API de Fitbit real como el resultado de búsqueda principal). De lo contrario, puede comunicarse directamente con la empresa para preguntar si tienen documentación de la API que puedan enviar.

En algunos casos, la documentación de la API puede ser realmente decepcionante , lo que genera frustración en la comunidad de desarrolladores. Pero esa es una oportunidad para contribuir y llenar los vacíos o hacer su propio producto mejor.

Resumen

Los ingenieros escriben API con la esperanza de que usted desarrolle y use sus aplicaciones, conjuntos de datos y dispositivos portátiles. Ahora que comprende las API, consulte estas API populares para comenzar . La mayoría de las veces, su tecnología y aplicaciones favoritas tienen API que puede usar en su próximo proyecto.

Si tiene alguna pregunta o comentario, envíenos un correo electrónico a [email protected] o envíenos un mensaje a Instagram (@protobioengineering) . Gracias por leer.

enlaces relacionados

  • GitHub para biólogos
  • API de Dataverse: software y datos de investigación de código abierto
  • Cartero: compilar y probar API
  • Foto de Phil Hearing en Unsplash