简体   繁体   中英

How to send JSON file as part of request body in CURL POST command

I am using CURL command line to send HTTP POST to a web service. I want to include a file's contents as a PART of the body of the POST command. Is this possible? I know I can send a file as the entire body as answered here . But I only want a part of the body to be the content of the file.

For example

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

Here I only want data as the file's content. Not the entire body. How can I do this?

Set a variable to contain the file contents:

data=$(cat /path/to/file)

then substitute it into the JSON:

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

You accepted @Barmar's answer, but for anyone reading this, @Barmar switched the double- and single-quotes, which will cause the command to not work as intended.

The following works:

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

Notice that the $data variable is surrounded by single-quotes first, then double-quotes.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM