3.5. Cliente cURL¶
cURL, el comando cURL (Client URL o cURL), es un cliente HTTP por línea de comandos el cual permite el intercambio de datos entre un dispositivo y un servidor a través de un terminal de comando.
Figura 3.1, cURL¶
3.5.1. Características¶
Escrito en C y usa la librería
libcurl
.Admite muchos otros protocolos además de HTTP(S).
Admite cualquier cantidad de URL en la línea de comando.
Puede enviar
POST
binarios.Admite múltiples métodos HTTP en una sola línea de comando para diferentes URL.
Documentado en una página man para documentación fuera de línea.
Admite solicitudes HTTP/1.0.
Características URL «globbing» para rangos y secuencias.
Permite modificaciones de encabezado más invasivas, como pasar letras no válidas en encabezados personalizados (Höst:), reemplazar Content-Length:en un
POST
y eliminar el Host:encabezado de una solicitud. O simplemente agregar un encabezado sin espacio después de los dos puntos.Admite globos oculares felices o uso explícito de ipv4/ipv6.
Admite trucos de conexión personalizados como –resolve y –connect-to.
Compatibilidad con HTTP/2 (tanto para
HTTP://
como paraHTTPS://
URL).Compatibilidad con HTTP/3.
Ofrece compresión usando
gzip
,brotli
yzstd
.Se envía de forma predeterminada en macOS y Windows 10.
3.5.2. Instalación¶
Primero actualice su sistema, con el siguiente comando:
sudo apt update && sudo apt upgrade -y
Es una aplicación de línea de comando, por lo que puedo instalarla con el siguiente comando:
sudo apt install -y curl
Una vez instalado puedes ejecutar con el siguiente comando:
curl --version
Si muestra el numero de la versión instalada de curl
, tiene correctamente instalada la
herramienta.
3.5.3. Uso¶
Con esta interfaz de línea de comandos (o CLI), puede especificarse la URL de un servidor (es decir, la ubicación a la que se envía la solicitud) y los datos que se van a enviar a ese servidor.
curl https://curl.se/
Aunque las plataformas API suelen tener interfaces muy intuitivas para solicitar y transferir datos a una URL, el comando curl puede ser una herramienta muy útil para usar con el terminal, y estos son algunos de sus usos más comunes.
3.5.3.1. Guardar contenido de una URL¶
De la misma forma en que puedes usar el comando curl para descargar imágenes, puedes guardar
el contenido de una URL (como una página web) en un archivo. Este es un ejemplo que usa la
página de proyecto curl
:
curl -o curl.html https://curl.se/
En este ejemplo, el código de origen de la página de proyecto curl
se guarda en un archivo
denominado curl.html
.
3.5.3.2. Descargar ficheros a un dispositivo¶
Como el terminal tiene acceso al sistema de archivos, también puedes descargar imágenes fácilmente desde direcciones URL.
Por ejemplo, esta es la URL del logotipo de Python.org, y con el comando curl, puedes descargar un archivo comprimido de la siguiente forma:
curl https://www.python.org/ftp/python/3.11.11/Python-3.11.11.tar.xz -o Python-3.11.11.tar.xz
Con el comando curl y la URL de un archivo comprimido, pueden obtenerse los datos binarios del
archivo comprimido y almacenarse en el disco duro con el mismo nombre del archivo original Python-3.11.11.tar.xz
.
Por ejemplo, esta es la URL del logotipo de Python.org, y con el comando curl
, puedes descargar
la imagen de la siguiente forma:
curl https://www.python.org/static/img/python-logo.png > python-logo.png
Con el comando curl y la URL de la imagen, pueden obtenerse los datos binarios del logotipo y
almacenarse en un archivo de imagen (con una extensión .png
como la del archivo original) que
luego puede guardarse en el disco duro.
3.5.3.3. Probar rápidamente una API desde el terminal¶
Como ya hemos visto, el comando curl permite probar rápidamente una API desde el terminal sin tener que descargar una aplicación específica.
3.5.3.3.1. request GET con response 200¶
curl -X GET https://jsonplaceholder.typicode.com/todos/1
3.5.3.3.2. request POST formato x-www-form-urlencoded¶
curl -X POST -d "name=cURL&type=article" https://jsonplaceholder.typicode.com/posts
3.5.3.3.3. request POST formato json¶
curl -X POST -d '{"name": "cURL", "type": "article"}' -H "Content-Type: application/json" https://jsonplaceholder.typicode.com/posts
3.5.3.3.4. request PUT formato json¶
curl -X PUT -d '{"name": "json", "type": "post"}' -H "Content-Type: application/json" https://jsonplaceholder.typicode.com/posts/1
3.5.3.3.5. request DELETE¶
curl -X DELETE https://jsonplaceholder.typicode.com/posts/1
De esta forma aprendió a usar el comando curl.
Ver también
Consulte la sección de lecturas suplementarias del entrenamiento para ampliar su conocimiento en esta temática.
¿Cómo puedo ayudar?
¡Mi soporte está aquí para ayudar!
Mi horario de oficina es de lunes a sábado, de 9 AM a 5 PM. UTM - Madrid, España.
La hora aquí es actualmente 7:35 PM UTM.
Mi objetivo es responder a todos los mensajes dentro de un día hábil.
