Ich versuche, die cat
Ausgang passieren zu locken:Verwendung Rohr für curl Daten
$ cat file | curl --data '{"title":"mytitle","input":"-"}' http://api
Aber input
ist buchstäblich ein -
.
Ich versuche, die cat
Ausgang passieren zu locken:Verwendung Rohr für curl Daten
$ cat file | curl --data '{"title":"mytitle","input":"-"}' http://api
Aber input
ist buchstäblich ein -
.
Versuchen
curl --data '{"title":"mytitle","input":"'$(cat file)'-"}' http://api
ich eine Weile lang versucht, dies herauszufinden und bekam arbeiten sie mit folgendem:
cat data.json | curl -H "Content-Type: application/json" -X POST -d @- http://api
Das Problem ist der Inhalt der Datei wird der Wert sein "Eingabe" in den JSON-Daten. – Michelle
Sie können die magische stdin-Datei verwenden /dev/stdin
cat data.json | curl -H "Content-Type: application/json" -X POST -d "$(</dev/stdin)" http://api
Dies sollte auch funktionieren
curl -H "Content-Type: application/json" -d @data.json http://api
Die Verwendung von -d erzwingt die Verwendung von curl, um implizit POST für die Anforderung zu verwenden.
Curl documentation for -d
option
Wenn Sie die Daten mit dem Buchstaben @ beginnen, sollte der Rest ein Dateiname sein, die Daten zu lesen, aus, oder - wenn Sie locken wollen die Daten von stdin zu lesen. Mehrere Dateien können ebenfalls angegeben werden. Das Veröffentlichen von Daten aus einer Datei namens "foobar" würde also mit -d, --data @foobar erfolgen. Wenn --data angewiesen wird, aus einer Datei wie diesem zu lesen, werden Zeilenumbrüche und Zeilenumbrüche entfernt. Wenn Sie nicht möchten, dass das Zeichen @ eine spezielle Interpretation hat, verwenden Sie stattdessen --data-row.
Abhängig von Ihrem HTTP-Endpunkt, Serverkonfiguration, sollten Sie mit Hilfe dieses Formats gut sein:
curl -d @data.json http://api
Ich bin nicht sicher, ob es ein spezielles Format hier ist, sonst könnte das sein, was Sie wollen: http://serverfault.com/questions/313599/how-doi-i-pipe-the-output-of-uptime-df-to-curl – thomasa88