У меня есть следующий GET CURL, из которого я получаю xml.
curl -X 'GET' \
'http://local/something/something2' \
-H 'accept: application/json' \
-H 'authorization: auth'
Теперь я хочу использовать предыдущий xml, полученный выше, в этом POST CURL:
curl -X 'POST' \
'http://something/something2' \
-H 'accept: application/json' \
-H 'authorization: auth' \
-H 'Content-Type: application/json' \
-d '{
"components": [
{
"locator": "sample",
"config": xml file from above
}
]
}'
Как я могу сделать второй CURL с POST?
🤔 А знаете ли вы, что...
Bash поддерживает механизмы контроля доступа к файлам и каталогам с помощью прав доступа.
См. этот пост, чтобы узнать, как записать вывод первой команды в переменную. Используйте это так:
output=$(curl -X 'GET' \
'http://local/something/something2' \
-H 'accept: application/json' \
-H 'authorization: auth')
# Assuming the $output variable is a JSON object, with a property
# called 'result', use 'jq' to extract the value of that property
result=$(jq -r '.result' <<< "$output")
# As noted above, escape the double quotes with backslashes
curl -X 'POST' \
'http://something/something2' \
-H 'accept: application/json' \
-H 'authorization: auth' \
-H 'Content-Type: application/json' \
-d "{
\"components\": [
{
\"locator\": \"sample\",
\"config\": \"$result\"
}
]
}"
Обратите внимание на двойные кавычки — двойные кавычки должны быть там, чтобы можно было использовать переменную $output
. В результате двойные кавычки в JSON необходимо экранировать.