Introducción
curl
es una utilidad de línea de comandos para transferir datos hacia o desde un servidor remoto utilizando uno de los protocolos admitidos. Se instala de forma predeterminada en Windows, macOS y la mayoría de las distribuciones de Linux.
Los administradores de sistemas, desarrolladores y otros usuarios utilizan curl
para probar API, ver encabezados de respuesta y realizar solicitudes HTTP.
Este artículo explica cómo utilizar curl para realizar solicitudes POST.
Opciones de rizo
El método HTTP POST se utiliza para enviar datos al servidor remoto.
La forma general del comando curl
para realizar una solicitud POST es la siguiente:
curl -X POST [options] [URL]
La opción -X
especifica qué método de solicitud HTTP se utilizará al comunicarse con el servidor remoto. En la mayoría de los casos, no es necesario configurar el método porque está determinado por las opciones de la línea de comandos.
Hacer una solicitud POST
Una solicitud POST típica se envía a través de un formulario HTML y los datos enviados al formulario generalmente están codificados en el tipo de formato application/x-www-form-urlencoded
. Las claves y valores de los datos están codificados en pares clave-valor, separados por el símbolo &
y separados =
entre la clave y el valor.
Para enviar una solicitud POST con curl
, use la opción -d
( --data
) para especificar los datos:
curl -d 'name=noviello&[email protected]' https://example.com/form/
En el ejemplo anterior, enviamos datos al servidor remoto que consta de dos pares clave-valor: "nombre=noviello" y " correo electró[email protected] ".
También puede enviar datos utilizando múltiples opciones -d
. Por ejemplo, el comando anterior también se puede escribir así:
curl -d 'name=noviello' -d '[email protected]' https://example.com/form/
Al enviar datos a curl
usando la opción -d
, siempre debe codificar correctamente en URL todos los caracteres no alfanuméricos tanto en claves como en valores. Por ejemplo, si envía datos que contienen un nombre con espacios ("John Doe"), el comando se verá así:
curl -d 'name=John%20Doe' https://example.com/form/
Sin embargo, resulta un poco incómodo codificar manualmente datos que aún no están codificados. En este caso, es mejor utilizar la opción --data-urlencode
que le indica curl
que codifique los datos proporcionados. El comando anterior, cuando se usa con la opción --data-urlencode
, se verá así:
curl --data-urlencode 'name=John Doe' https://example.com/form/
Los datos pasados al comando curl
suelen tener el formato key=value
. Cuando utiliza la opción --data-urlencode
, solo se codifica la parte del valor. curl
espera que la clave ya esté codificada en URL.
Si envía datos que contienen una gran cantidad de pares clave-valor, en lugar de escribir los datos en la línea de comando, puede almacenarlos en un archivo y pasar ese archivo a curl
:
curl -d @name_of_the_file https://example.com/form/
Cuando los datos proporcionados al comando comienzan con el símbolo @
, curl
trata los datos como un archivo en el sistema local y leerá y utilizará los datos de ese archivo.
Realice una solicitud POST utilizando los datos del formulario de varias partes
El tipo de contenido multipart/form-data
se utiliza cuando los datos del formulario contienen archivos binarios u otros datos de carga útil de gran tamaño.
Para crear una solicitud POST de varias partes, invoque el comando curl
con una o más opciones -F
( --form
), seguidas de pares key=value
. Cuando se usa la opción -F
, curl
envía datos usando el tipo de contenido multipart/form-data
.
El siguiente ejemplo muestra cómo realizar una solicitud POST a un formulario que tiene campos "nombre" e "imagen":
curl -F 'name=noviello' -F '[email protected]' https://example.com/form/
Subir archivo
Para PUBLICAR un archivo con curl
, agregue el símbolo @
antes de la ruta del archivo. El archivo puede ser un archivo, una imagen, un documento, etc.
curl -F 'image=@/home/user/Pictures/wallpaper.jpg' http://example.com/upload/
PUBLICAR datos JSON con cURL
JSON es un formato de datos basado en texto que se utiliza para transferencias de datos entre servicios web y API.
Puede enviar datos JSON usando POST usando curl
la opción --json
.
A continuación se muestra un ejemplo básico de cómo enviar un objeto JSON a un servidor:
curl --json '{"website": "noviello.it"}' http://example.com/api/
curl
envía datos JSON tal cual, así que asegúrese de que estén en un formato JSON válido.
Al igual que con las solicitudes POST normales, puedes usar múltiples opciones --json
en un solo comando:
curl --json '{"name": "Jonn"}' --json '{"age": "36"}' http://example.com/api/
Los datos JSON también se pueden leer desde un archivo local:
curl --json @json_data.txt http://example.com/api/
Si está utilizando un script curl
, puede canalizar los datos JSON desde otro comando a curl
, como se muestra a continuación:
echo '{"website": "noviello.it"}' | curl --json @- http://example.com/api/
La parte @-
significa leer el cuerpo desde la entrada estándar.
Conclusión
Le mostramos cómo usar curl
para realizar solicitudes POST. Para obtener más información sobre curl
, visite la página de documentación de Curl.
Si tiene alguna pregunta o comentario, no dude en dejar un comentario.