Entrando en materia
Las interfaces de programación de aplicaciones (API) son una parte esencial de la web. Estas herramientas le permiten interactuar con otras plataformas.
Por ejemplo, se puede utilizar la API de Twitter para publicar tweets o mostrar una lista del TimeLine de tweets. Se puede utilizar la API de Airtable para acceder a sus hojas de cálculo y añadir nuevos registros. Pero, ¿cómo se interactúa realmente con las API?
Una de las formas más comunes de interactuar con una API es a través de cURL, una herramienta de línea de comandos que permite hacer peticiones web. Es probable que la mayoría de las APIs que has visto hayan incluido al menos alguna documentación sobre cómo usar cURL (Client for URLs).
Con este tutorial cURL, veremos que es y cómo se puede utilizar para hacer una solicitud web. Mostraré algunos comandos curl básicos para ayudarte a empezar.
¿Qué es cURL?
cURL significa «client URL» y es una herramienta de línea de comandos que te permite interactuar con sitios web. Puedes usarlo para hacer cualquier tipo de petición web. Esto significa que puedes utilizar cURL para obtener información de las API, descargar páginas web o enviar datos a una API.
cURL viene instalado en la mayoría de los sistemas operativos basados en UNIX, así que, a menos que esté ejecutando un Apple II, probablemente ya tenga el paquete instalado. Cuando uses cURL como comando, no necesitas poner el término en mayúsculas:
curl
Cómo hacer una petición usando cURL
En este tutorial, vamos a ver cómo utilizar cURL para recuperar información de la API de Airtable, software privativo con una versión Fremium. Esta API permite ver, crear y modificar registros en algo similar a una hoja de cálculo rápida y flexible, que en realidad es una base de datos relacional. Nuestro documento de Airtable contiene una lista de tés con algunas notas de cata.
La API de Airtable proporciona dos opciones que puedes utilizar para interactuar con su API: cURL o JavaScript. Por supuesto, vamos a centrarnos en la opción cURL en este tutorial.
Hacer una petición GET usando cURL
Para hacer una petición web cURL, sólo tenemos que especificar «curl», seguido de la URL que queremos recuperar. Si queremos hacer una petición web GET a la API de Airtable, podríamos utilizar este comando
curl "https://api.airtable.com/v0/appiTz7oLBs9hDIFg/Tracker?maxRecords=3&view=Grid%20view"
Cuando este comando se ejecuta, se devuelve lo siguiente:
{"error":{"type": "AUTHENTICATION_REQUIRED","message":"Authentication required"}}
Nuestro comando cURL ha realizado con éxito una petición web. El problema es que aún no hemos especificado una clave de API, que debemos utilizar para autenticarnos. Para ello, vamos a seguir las instrucciones de la API de Airtable y especificar una cabecera «authorization»:
curl "https://api.airtable.com/v0/appiTz7oLBs9hDIFg/Tracker?maxRecords=3&view=Grid%20view" -H "Authorization: Bearer TU_API_KEY"
Cuando ejecutamos este comando con una clave de API, se devuelve lo siguiente:
{
"records":[
{
"id": "recyPfUXJUP1HH03a",
"fields":{
"Bebida": "Té negro descafeinado",
"Date":"2020-05-24T10:03:38.000Z"
},
"createdTime":"2020-05-24T10:03:38.000Z"
]
}
Como puede ver, cURL ha devuelto una lista de los registros de nuestra base de datos. Ahora mismo, sólo tenemos las notas de cata de un té, pero eso es todo lo que necesitamos para demostrar que nuestro comando cURL ha funcionado.
Hacer una petición POST con cURL
cURL también permite hacer peticiones HTTP POST. Esto permite enviar datos a un servidor web que será procesado por ese servidor. En el caso de la API de Airtable, una petición POST le permite añadir un registro a una base de datos. Airtable nos da el siguiente comando como ejemplo:
curl -v -X POST https://api.airtable.com/v0/appiTz7oLBs9hDIFg/Tracker \
-H "Authorization: Bearer TU_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"records": [
{
"field": {
"Bebida": "Darjeeling"
}
},
]
}'
Hay muchas cosas en este comando, así que vamos a desglosarlo:
- -v le dice a cURL que nos muestre todos los detalles de la salida.
- -X POST le dice a cURL que haga una petición POST.
- https://api.airtable.com/v0/appiTz7oLBs9hDIFg/Tracker es la URL a la que estamos enviando nuestra petición POST.
- -H nos permite especificar cabeceras para nuestra petición web, que almacenan datos adicionales como nuestra clave API y el tipo de contenido que estamos enviando.
- -data es donde especificamos los datos que queremos enviar al servidor web.
Al ejecutar este comando se obtiene lo siguiente:
{
"records": [
{
"id": "recyPfUXJUP1HH03a",
"fields": {
"Bebida": "Darjeeling",
"Date": "2020-05-24T10:03:38.000Z"
},
"createdTime": "2020-05-24T10:03:38.000Z"
},
}
Hemos utilizado con éxito cURL para hacer una solicitud POST a la API de Airtable.
Conclusiones
cURL puede no ser la herramienta más intuitiva del mundo, pero es un excelente candidato para interactuar con las APIs desde cualquier línea de comandos, por ejemplo, desde un Linux algojado en un contenedor Docker.
Hay una serie de herramientas que puedes utilizar en lugar de cURL, como Postman o Insomnia. Estas herramientas proporcionan una interfaz gráfica de usuario que facilita la personalización de tus peticiones web. Además, si estás construyendo una aplicación web, probablemente querrás hacer una petición web usando código en un lenguaje como Python.
Sin embargo, la principal ventaja de usar cURL es que te ayuda a averiguar cómo estructurar tus peticiones web antes de añadirlas a tu aplicación. Puedes probar diferentes métodos y asegurarte de que una petición es válida antes de codificarla en tu aplicación.
Si quieres saber más sobre cómo funciona el comando curl, consulta la página man de curl ejecutando man curl en tu línea de comandos de Linux. También puedes ir al tutorial de la página oficial de cURL o al que hemos traducido en un repo git.