Я пытаюсь отправить POST-запрос с помощью curl, но я хотел бы сохранить данные 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
не дает ошибок вместо
редактировать:
этот работает:
jsonvariable="{\"ora\":\"value1\",\"id\":\"value2\",temp\":\"value2\",\"rh\":\"value3\",\"lat\":\"value4\",\"longi\":\"value5\"}"
curl -H "Content-Type: application/json" -d "$jsonvariable" http://localhost:8080/updates
Вы использовали одинарные кавычки, которые препятствуют тому, чтобы переменная была расширена. Используйте двойные кавычки вместо этого:
curl -H "Content-Type: application/json" -d "$jsonvariable" http://localhost:8080/updates
Если Ваше переменное содержание содержит двойные кавычки, можно заключить в кавычки им с, например, обратным косым чертам.
Можно опустить -X POST
здесь, потому что POST является методом по умолчанию при определении данных для отправки с -d
.
Дополнительные материалы для чтения при заключении в кавычки в bash
: Как я ввожу файл или каталог со специальными символами на его имя?