Qué es el comando cURL y cómo usarlo

Software CMS gratis en español
Diana Walsh
Diana Walsh

Publicado:

No importa si te dedicas al desarrollo web o si te apasiona la tecnología: saber cómo funcionan las solicitudes HTTP y cómo interactuar con una API es fundamental, sobre todo a la hora de automatizar solicitudes y de depurar errores. En estas situaciones, lo ideal es ejecutar una solicitud HTML rápida desde el terminal, y es ahí donde la herramienta gratuita de líneas de comando cURL suele ser muy útil.

Qué es el comando curl

El comando "client URL" (o cURL) permite intercambiar datos entre un dispositivo y un servidor a través de una interfaz de línea de comandos (CLI). Solo hay que especificar la URL de un servidor y los datos que van a enviarse, y el comando cURL habilita distintos tipos de solicitudes de forma muy similar a como lo hacen algunas herramientas de API, como Postman e Insomnia, pero directamente desde el terminal.

En este artículo, explicaremos qué es el comando cURL, veremos cómo y por qué se usa, y presentaremos algunos ejemplos y usos comunes.

    << [Comienza ya] Gestiona tu contenido de una manera fácil con el software  CMS gratuito de HubSpot>>   

Qué es el comando cURL

El comando cURL (Client URL o cURL) es una línea de comandos que permite el intercambio de datos entre un dispositivo y un servidor a través de un terminal. 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.

Algunas herramientas de API, como Postman e Insomnia, tienen una interfaz de usuario (IU) interactiva que permite hacer diferentes tipos de solicitudes a URL, tanto para recibirlas como para procesarlas. El comando cURL hace lo mismo, pero lo hace directamente en el terminal, y funciona en Linux, Mac y Windows.

Además, el comando cURL usa la biblioteca libcURL de transferencia de URL del lado del cliente, que incluye muchos protocolos de transferencia diferentes, como HTTPS, SMTP, y FTP. También permite incluir cookies, definir proxies y añadir credenciales de autenticación al hacer solicitudes.

El comando cURL tiene muchas aplicaciones prácticas, y puede usarse para probar una API, descargar datos de distintas fuentes, probar sitios web y hacer un seguimiento de redireccionamientos desde el terminal.

Cómo usar el comando cURL

Ahora que sabemos qué es el comando cURL, veamos cómo funciona.

El comando cURL viene preinstalado en Windows y macOS, y si no lo tienes en tu equipo, puedes descargar el paquete desde el sitio web de cURL.

La principal funcionalidad del comando cURL es transferir o recibir datos, y también tiene otras opciones para diferentes propósitos.

La sintaxis del comando cURL es la siguiente:

cURL [opciones] [URL]

En este artículo usaremos la API ficticia JSONPlaceholder para explicar las distintas formas en las que puede usarse este comando. Esta API ficticia contiene diferentes rutas de ejemplo para realizar solicitudes.

Solicitar datos de una fuente con el comando cURL

Con el método GET y el comando cURL, puedes solicitar datos rápidamente desde una fuente o una API. Este es un sencillo comando cURL que hace solicitudes GET:

cURL https://jsonplaceholder.typicode.com/todos/1

Si no se pasan marcas ni opciones, el comportamiento predeterminado del comando cURL es hacer solicitudes GET a la URL especificada. Luego, devuelve el cuerpo de la respuesta enviada desde la API, que tendría este aspecto en el terminal:

{ "userId": 1, "id": 1, "title": "delectus aut autem", "completed": false }

Este resultado es similar al que obtendríamos de plataformas como Postman:

También puedes incluir opciones y valores para usar un método de solicitud diferente con el comando cURL. Por ejemplo, puedes usar la opción -X (es decir, un guion y una X mayúscula) con el método de solicitud. La opción -X es un alias de --request.

Escribe el comando de esta forma:

cURL -X [MÉTODO] [URL]

El método GET predeterminado del primer comando cURL de arriba es el mismo que este:

cURL -X GET https://jsonplaceholder.typicode.com/todos/1

Enviar datos a una fuente con el comando cURL

Con el método POST y el comando cURL, puedes transferir datos a un servidor a través de una API, que procesa los datos y sigue los pasos correspondientes, como guardar la información en una base de datos, para finalmente devolver una respuesta indicando el estado de la solicitud.

Para hacer una solicitud POST a una URL, usa la opción -X y pasa el método POST como el valor. Para agregar datos con la solicitud, usa la opción -d (guion y d minúscula), que es un alias de --data.

Al enviar datos con una solicitud, puedes usar dos formatos muy comunes: application/x-www-form-urlencoded o application/json.

application/x-www-form-URLencoded

Si no especificas ningún formato, el comando cURL usa application/x-www-form-urlencoded de forma predeterminada. Este ejemplo usa este formato y la API ficticia JSON:

cURL -X POST -d "name=cURL&type=article" https://jsonplaceholder.typicode.com/posts

Este comando hace una solicitud POST a https://jsonplaceholder.typicode.com/posts y pasa los datos codificados como URL "name=cURL&type=article", que es una clave de nombre con un valor cURL y una clave de tipo con un valor de artículo.

En las solicitudes POST que se hacen a la API ficticia JSON, el cuerpo de la respuesta es el objeto de datos enviado junto con una propiedad de ID.

Este es el cuerpo de la respuesta de la API después de introducir el comando:

{ "name": "cURL", "type": "article", "id": 101 }

application/JSON

Con cURL, también puedes enviar un objeto JSON en forma de cadena, como este:

cURL -X POST -d '{"name": "cURL", "type": "article"}' https://jsonplaceholder.typicode.com/posts

Como explicamos arriba, los datos de esta solicitud se envían en el formato application/x-www-form-urlencoded, y este es el resultado de la API:

{ "{\"name\": \"cURL\", \"type\": \"article\"}": "", "id": 101 }

La API entiende que los datos de la solicitud están en el formato de datos codificado como URL, por lo que no lo interpreta como debería. Debes especificar que es el formato de datos JSON usando la opción -H (guion y H mayúscula), que es un alias de --header, y pasando el encabezado Content-Type, de esta forma:

cURL -X POST -d '{"name": "cURL", "type": "article"}' -H "Content-Type: application/json" https://jsonplaceholder.typicode.com/posts

Ahora la API sí devuelve la respuesta correcta:

{ "name": "cURL", "type": "article", "id": 101 }

En lugar de escribir la cadena JSON en el terminal, puedes especificar un archivo JSON que el comando cURL usará como la opción de datos. Por ejemplo, digamos que tienes un archivo denominado data.json con este contenido:

{ "name": "cURL", "type": "article" }

Puedes ejecutar el comando cURL siempre que esté en el mismo proyecto que el archivo. El comando tomará el archivo JSON, lo convertirá en cadena y lo enviará con la solicitud, y el resultado que devolverá será el mismo que arriba:

{ "name": "cURL", "type": "article" }

Eliminar recursos en un servidor con el comando cURL

También puedes enviar solicitudes de eliminación a una API mediante el método DELETE y el comando cURL, y la URL y los datos que proporciones en esta solicitud dependerán de la configuración de la API.

En la API ficticia JSON, la ruta del recurso y el método DELETE se especifican de esta forma:

cURL -X DELETE https://jsonplaceholder.typicode.com/posts/1

El cuerpo de la respuesta es un objeto vacío:

{}

Actualizar recursos mediante una API con el comando cURL

Con el método PUT y el comando cURL, puedes hacer solicitudes "de actualización" a una API para modificar un recurso existente. En la API ficticia JSON, se especifican la ruta del recurso y el método PUT, y se pasan los datos para actualizar el recurso.

Estos datos pueden tener el formato que quieras. En este ejemplo, usaremos application/json:

cURL -X PUT -d '{"name": "json", "type": "post"}' -H "Content-Type: application/json" https://jsonplaceholder.typicode.com/posts/1

Debes especificar directamente el formato de los datos en el encabezado, de forma que la API pueda interpretar la solicitud correctamente.

El código de arriba devuelve este cuerpo de respuesta:

{ "name": "json", "type": "post", "id": 1 }

Protocolos y formatos del comando cURL

De forma predeterminada, el comando cURL usa el protocolo HTML, pero también puede usar otros protocolos y formatos, como los siguientes:

Protocolo de transferencia de archivos

El protocolo de transferencia de archivos (File Transfer Protocol o FTP) sirve para transferir archivos de un servidor a un cliente. Usa este protocolo con cURL para subir archivos como este:

cURL -T [archivo-seleccionado] "ftp://[destino-objetivo]"

El comando cURL puede usarse en lugar de un cliente FTP estándar.

Protocolo simple de transferencia de correo

El protocolo simple de transferencia de correo (Simple Mail Transfer Protocol o SMTP) se usa para enviar los siguientes datos a un servidor SMTP: el texto del correo, el remitente y el destinatario. Tiene este aspecto:

cURL smtp://[servidor-smtp] --mail-from [remitente] --mail-rcpt \ [destinatario] --upload-file [contenido-del-correo]

Protocolo de red de diccionarios

El protocolo de red de diccionarios (Dictionary Network Protocol o DICT) proporciona acceso a diccionarios, y al usarlo con cURL, hay que ejecutar este comando:

cURL "dict://dict.org/d:hola"

Con este comando, obtienes un resultado que muestra el diccionario seleccionado y el significado de la palabra "hola" que le da ese diccionario.

Puedes encontrar más protocolos en la página de cURL man.

Usos comunes del comando cURL

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.

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.

Descargar imágenes y archivos 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 Google, y con el comando cURL, puedes descargar la imagen de la siguiente forma:

cURL https://www.google.com/images/branding/googlelogo/2x/googlelogo_light_color_272x92dp.png > google-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.

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 inicio de Google:

cURL -o google.html https://www.google.es

En este ejemplo, el código de origen de la página de inicio de Google se guarda en un archivo denominado google.html.

El comando cURL puede ahorrarte mucho trabajo

El comando cURL es una herramienta CLI que te permite solicitar y transferir datos mediante una URL y mediante distintos protocolos, con toda la flexibilidad y el control que te da el terminal.

Usar el comando cURL en el terminal es muy sencillo, y aunque podría no ser la opción más intuitiva para todo el mundo, solo hay que especificar una URL y las opciones necesarias para solicitar y descargar datos de direcciones URL, transferir datos a esas direcciones y mucho más.

New Call-to-action
Temas: API

Artículos relacionados

Gestiona tu contenido de manera fácil con el software CMS gratuito de HubSpot

COMENZAR GRATIS

CMS Hub is flexible for marketers, powerful for developers, and gives customers a personalized, secure experience

START FREE OR GET A DEMO