Próbuję przekazać wyjście cat
zwijają:stosowanie rur danych curl
$ cat file | curl --data '{"title":"mytitle","input":"-"}' http://api
Ale input
jest dosłownie -
.
Próbuję przekazać wyjście cat
zwijają:stosowanie rur danych curl
$ cat file | curl --data '{"title":"mytitle","input":"-"}' http://api
Ale input
jest dosłownie -
.
Spróbuj
curl --data '{"title":"mytitle","input":"'$(cat file)'-"}' http://api
Spędziłem trochę czasu próbuje dowiedzieć się tego, ale to praca z następujących czynności:
cat data.json | curl -H "Content-Type: application/json" -X POST -d @- http://api
Problem polega na tym, że zawartość pliku będzie wartością 'input' w danych JSON. – Michelle
Można użyć magicznego pliku stdin /dev/stdin
cat data.json | curl -H "Content-Type: application/json" -X POST -d "$(</dev/stdin)" http://api
To powinno również działać
curl -H "Content-Type: application/json" -d @data.json http://api
Użycie opcji -d wymusza zwijanie, aby niejawnie używać testu POST dla żądania.
Curl documentation for -d
option
Jeśli zaczniesz dane z literą @, reszta powinna być nazwa pliku do odczytu danych z, lub - jeśli chcesz zwijają do odczytu danych ze standardowego wejścia. Można również określić wiele plików. Publikowanie danych z pliku o nazwie "foobar" byłoby więc wykonane z opcją -d, --data @foobar. Kiedy -data ma odczytać taki plik, powraca karetka, a znaki nowej linii zostaną usunięte. Jeśli nie chcesz, aby znak @ miał specjalną interpretację, użyj zamiast niego --data-raw.
W zależności od Twojego punktu końcowego HTTP, konfiguracja serwera, powinno być dobrze za pomocą tego formatu:
curl -d @data.json http://api
Nie jestem pewien, czy istnieje specjalny format tutaj, w przeciwnym razie może to być co chcesz: http://serverfault.com/questions/313599/how-do-i-pipe-the-output-of-uptime-df-to-curl – thomasa88