2012-09-25 29 views
11

que estoy tratando de pasar la salida cat para rizar:tubería uso de datos enrollamiento

$ cat file | curl --data '{"title":"mytitle","input":"-"}' http://api 

Pero input es literalmente un -.

+0

No estoy seguro de si hay un formato especial aquí, de lo contrario esto podría ser lo desea: http://serverfault.com/questions/313599/how-doi-i-pipe-the-output-of-uptime-df-to-curl – thomasa88

Respuesta

6

Trate

curl --data '{"title":"mytitle","input":"'$(cat file)'-"}' http://api 
30

Pasé un tiempo tratando de resolver esto y tengo trabajo con lo siguiente:

cat data.json | curl -H "Content-Type: application/json" -X POST -d @- http://api 
+0

el problema es que el contenido del archivo será el valor de 'input' en los datos JSON. – Michelle

6

Usted puede utilizar el archivo de entrada estándar mágica /dev/stdin

cat data.json | curl -H "Content-Type: application/json" -X POST -d "$(</dev/stdin)" http://api 
2

Esto también debería funcionar

curl -H "Content-Type: application/json" -d @data.json http://api 

Usando -d fuerza el curl para usar implícitamente POST para la solicitud.

0

Curl documentation for -d option

Si inicia los datos con la letra @, el resto debe ser un nombre de archivo para leer los datos de, o - si quieres rizo para leer los datos de la entrada estándar. Múltiples archivos también pueden ser especificados. La publicación de datos de un archivo llamado 'foobar' se haría con -d, --data @foobar. Cuando --data se le dice que lea de un archivo como ese, los retornos de carro y las nuevas líneas serán eliminados. Si no desea que el carácter @ tenga una interpretación especial, use --data-raw en su lugar.

Dependiendo de su extremo HTTP, la configuración del servidor, debe ser bueno usando este formato:

curl -d @data.json http://api