我正在尝试使用 curl 发送 POST 请求,但我想将 json 数据存储在变量中,以便在发生错误时重新发送。我使用了以下代码:
jsonvariable="{"ora" : "value1", "temp" : "value2", "rh" : "value3", "lat" : "value4", "longi" : "value5"}"
curl -X POST -H "Content-Type: application/json" -d '$jsonvariable' http://localhost:8080/updates
但选项后的格式-d
不正确。你能帮助我吗?
此代码:
curl -X POST -H "Content-Type: application/json" -d '{"ora" : "value1", "id" : "value2", "temp" : "value3","rh" : "value4", "lat" : "value5", "longi" : "value6"}' http://localhost:8080/updates
没有给出任何错误
答案1
您使用了单引号,这会阻止变量扩展。请改用双引号:
curl -H "Content-Type: application/json" -d "$jsonvariable" http://localhost:8080/updates
如果变量内容包含双引号,则可以用反斜杠将其括起来。
您可以省略-X POST
这里,因为如果您指定要发送的数据,则 POST 是默认方法-d
。
关于引用的进一步阅读bash
:如何输入名称中带有特殊字符的文件或目录?