如何将JSON从文件插入到CURL的POST请求中

How to insert JSON from file into POST request for CURL

提问人:somepage 提问时间:11/14/2023 最后编辑:tripleeesomepage 更新时间:11/15/2023 访问量:47

问:

我正在尝试使用 向服务器发送 POST 请求。我正在尝试在请求正文中从文件添加字符串,但出了点问题。curl

请求示例:

curl -X POST -H "Content-Type: application/json" \
    -d '{"property_1":"value_1", "property_2":"value_2", "property_3":"'$(cat file.json)'"}' 
    http://localhost:8000/update

任何想法,怎么了?

bash http 卷曲

评论

1赞 tripleee 11/14/2023
尝试在周围添加双引号"$(cat file.json)"
0赞 tripleee 11/14/2023
您还需要在第二个换行符之前使用反斜杠,以便 URL 是命令行的一部分。curl
0赞 Don't Panic 11/15/2023
这回答了你的问题吗?如何通过 JSON 文件传递 curl 的有效负载?

答:

1赞 Paul Hodges 11/15/2023 #1

我同意 tripleee 的观点 - 文件中的字符可能会混淆您的 CLI,并且需要引用输出。

curl -X POST -H "Content-Type: application/json" \
    -d '{"property_1":"value_1", "property_2":"value_2", "property_3":"'"$(<file.json)"'"}' \
    http://localhost:8000/update

顺便说一句,我个人更喜欢避免使用连续行,并且通常会使用 vars 和数组来代替,以提高可读性和易于维护。

boilerplate='"property_1":"value_1","property_2":"value_2","property_3":"'
args=( -X POST 
       -H "Content-Type: application/json"
       -d "{$boilerplate$(<file.json)\"}"
)
curl "${args[@]}" http://localhost:8000/update

这导致(有效)

curl -X POST -H 'Content-Type: application/json' -d '{"property_1":"value_1","property_2":"value_2","property_3":"<your file stuff>"}' http://localhost:8000/update