Httpie: JSON JSON Body

Créé le 13 nov. 2015  ·  6Commentaires  ·  Source: httpie/httpie

Comment imprimer joliment un corps de sortie JSON afin de le formater dans la console bash comme

macbookproloreto:~ admin$ echo '{"foo": "lorem", "bar": "ipsum"}' | python -m json.tool
{
    "bar": "ipsum",
    "foo": "lorem"
}

Ma commande ressemble maintenant

http --session=cookies.txt --pretty all --json --print=b --style=xcode "https://myapi.company.com | python -m json.tool

L'option --pretty a-t-elle pour objectif d'imprimer joliment le corps de sortie ? L'avoir semble ne pas embellir le corps de sortie, à la place, il imprime le json en texte brut

'{"foo": "lorem", "bar": "ipsum"}'

Commentaire le plus utile

@jkbrzt exactement. En fait, le problème était que les en-têtes du serveur étaient text/plain tandis que le corps était un texte formaté comme un corps json (json bien formaté). Fondamentalement, l'en-tête de réponse Content-Type n'est pas application/json . HTTPie forcer le formatage json dans ces cas ?

Tous les 6 commentaires

Cela fonctionne hors de la boîte:

screen shot 2016-01-01 at 6 58 34 pm

@jkbrzt oui mais ce n'est pas la réponse body . Il semble que ce ne soit pas joli le corps mais seulement le headers .

@loretoparisi c'est le corps de la réponse, voir http://httpbin.org/get

Ok, j'ai trouvé le problème, c'est quelque chose qui ne va pas dans les en-têtes de réponse. En fait, si j'essaie un corps de réponse bien formaté au format json comme :

http --session=cookies.txt --pretty all --json --print=b --style=xcode "https://api.spotify.com/v1/tracks/0eGsygTp906u18L0Oimnem"

Ça marche.
Lorsque les en-têtes de réponse http sont text/plain

HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 1996
Content-Type: text/plain; charset=utf-8

la mise en forme résultante est simple.

HTTPie regarde l'en-tête de la réponse Content-Type . Si c'est text/plain , alors il ne fait aucun formatage spécial. L'URL que vous avez fournie renvoie Content-Type: application/json; charset=utf-8 afin qu'elle soit correctement formatée et mise en évidence en tant que JSON.

screen shot 2016-01-03 at 6 58 33 pm

@jkbrzt exactement. En fait, le problème était que les en-têtes du serveur étaient text/plain tandis que le corps était un texte formaté comme un corps json (json bien formaté). Fondamentalement, l'en-tête de réponse Content-Type n'est pas application/json . HTTPie forcer le formatage json dans ces cas ?

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

aventurella picture aventurella  ·  13Commentaires

dobeerman picture dobeerman  ·  10Commentaires

whodidthis picture whodidthis  ·  24Commentaires

ayushidalmia picture ayushidalmia  ·  8Commentaires

mrsarm picture mrsarm  ·  18Commentaires