如何在CURL POST命令中将JSON文件作为请求体的一部分发送

时间:2017-12-05 21:23:45

标签: json shell curl command-line

我正在使用CURL命令行将HTTP POST发送到Web服务。我想将文件的内容包含在POST命令正文的 PART 中。这可能吗?我知道我可以像回答here一样发送整个文件。但我只希望身体的一部分成为文件的内容。

例如

curl -d '{ "name": "rahul", "speed": "fast", "data": { "number": 1, "letter": "abd", "letter2": "efg"} }' 'http://...'

此处我只想data作为文件的内容。不是整个身体。我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

设置变量以包含文件内容:

data=$(cat filename)

然后将其替换为JSON:

curl -d '{ "name": "rahul", "speed": "fast", "data": ' "$data" ' }' 'http://...'

答案 1 :(得分:0)

您接受了@Barmar的回答,但是对于阅读此书的任何人,@ Barmar都会切换双引号和单引号,这将导致该命令无法正常工作。

以下作品:

data=$(cat filename) && \
curl -d '{ "name": "rahul", "speed": "fast", "data": "'$data'" }' 'http://...'

请注意,$data变量先用单引号引起来,然后用双引号引起来。