2012-09-25 38 views
11

Tôi đang cố gắng để vượt qua cat đầu ra cuộn tròn:ống sử dụng cho dữ liệu curl

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

Nhưng input là nghĩa đen một -.

+0

Tôi không chắc chắn nếu có một định dạng đặc biệt ở đây, nếu không này có thể là những gì bạn muốn: http://serverfault.com/questions/313599/how-do-i-pipe-the-output-of-uptime-df-to-curl – thomasa88

Trả lời

6

Hãy thử

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

tôi đã dành một thời gian cố gắng để con số này ra và nhận nó làm việc như sau:

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

vấn đề là nội dung của tệp sẽ là giá trị của 'đầu vào' trong dữ liệu JSON. – Michelle

6

Bạn có thể sử dụng các tập tin stdin huyền diệu /dev/stdin

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

Điều này cũng sẽ hoạt động

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

Sử dụng lực lượng d cuộn tròn để sử dụng ngầm POST cho yêu cầu.

0

Curl documentation for -d option

Nếu bạn bắt đầu các dữ liệu bằng chữ @, phần còn lại phải là một tên tập tin để đọc dữ liệu từ, hoặc - nếu bạn muốn curl để đọc dữ liệu từ thiết bị nhập chuẩn. Nhiều tệp cũng có thể được chỉ định. Việc đăng dữ liệu từ một tệp có tên 'foobar' do đó sẽ được thực hiện với -d, --data @foobar. Khi --data được yêu cầu đọc từ một tập tin như vậy, trả về vận chuyển và dòng mới sẽ bị loại bỏ. Nếu bạn không muốn ký tự @ có cách sử dụng thông dịch đặc biệt - thay vào đó là dữ liệu thô.

Tùy thuộc vào thiết bị đầu cuối HTTP của bạn, cấu hình máy chủ, bạn sẽ được tốt bằng cách sử dụng định dạng này:

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

Các vấn đề liên quan