it-roy-ru.com

как заставить curl выводить только тело ответа http (json) и никаких других заголовков и т. д.

Я использую curl в скрипте bash, чтобы получить ответ службы, как показано ниже,

response=$(curl -isb -H "Accept: application/json" "http://Host:8080/some/resource")

Ответ службы имеет тип json, и в браузере я мог бы прекрасно ответить.
Однако ответ curl имеет другие нежелательные вещи (например, set-cookie, заголовок длины содержимого в этом случае), и иногда фактический ответ съедается.

Вот вывод echo $response>

 Set-Cookie: rack.session=BAh7CEkiD3Nlc3Npb25faWQGOgZFVEkiRWJlY2JiOTE2M2Q1ZWI4NThjMDdi%0AYjRiOWRjMGMxMGEwYTBkMjE3NmJhZDVjYzY4YjY4ZTlmMTE2ZGVkYWE3MTMG%0AOwBGS
SIJY3NyZgY7AEZJIiVhZmQ2MmUyZGMxMzFmOGEwMjg3NDlhNWM3YmVm%0AN2FjNwY7AEZJIg10cmFja2luZwY7AEZ7B0kiFEhUVFBfVVNFUl9BR0VOVAY7%0AAFRJIi00MTc0OGM2MWNkMzljZTYxNzY3ZjU0
Y2I5OTdiYWRkN2MyNTBkYmU4%0ABjsARkkiGUhUVFBfQUNDRVBUX0xBTkdVQUdFBjsAVEkiLWRhMzlhM2VlNWU2%0AYjRiMGQzMjU1YmZlZjk1NjAxODkwYWZkODA3MDkGOwBG%0A--ee97a62095e7d42129
 tontent-Length: 354c8; path=/; HttpOnly

Это нарушает мою логику анализа ответа.
Я видел, как это происходит периодически, что странно.

Есть ли способ получить "only" ответ json с вывода curl?
Я просмотрел документацию по curl, но ничего не увидел/или мог пропустить.
Ценю любую помощь! Спасибо

55
Rishi

Вы указываете параметр -i:

- i, --include

(HTTP) Включить HTTP-заголовок в вывод. HTTP-заголовок включает в себя такие вещи, как имя сервера, дату документа, HTTP-версию и многое другое ...

Просто удалите эту опцию из командной строки:

response=$(curl -sb -H "Accept: application/json" "http://Host:8080/some/resource")
97
Remy Lebeau