Cómo imprimir bastante un cuerpo de salida JSON para formatearlo en la consola bash como
macbookproloreto:~ admin$ echo '{"foo": "lorem", "bar": "ipsum"}' | python -m json.tool
{
"bar": "ipsum",
"foo": "lorem"
}
Mi comando parece ahora
http --session=cookies.txt --pretty all --json --print=b --style=xcode "https://myapi.company.com | python -m json.tool
¿La opción --pretty
tiene como objetivo imprimir bastante el cuerpo de salida? Parece que no embellece el cuerpo de salida, sino que imprime el json como texto sin formato
'{"foo": "lorem", "bar": "ipsum"}'
Esto funciona fuera de la caja:
@jkbrzt sí, pero esta no es la respuesta body
. Parece que no embellece el cuerpo sino solo el headers
.
@loretoparisi es el cuerpo de respuesta, consulte http://httpbin.org/get
Ok, he encontrado el problema, hay algo mal en los encabezados de respuesta. De hecho, si pruebo un cuerpo de respuesta bien formateado con formato json como:
http --session=cookies.txt --pretty all --json --print=b --style=xcode "https://api.spotify.com/v1/tracks/0eGsygTp906u18L0Oimnem"
funciona.
Cuando los encabezados de respuesta http son text/plain
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 1996
Content-Type: text/plain; charset=utf-8
el formato resultante es simple.
HTTPie mira el encabezado de respuesta Content-Type
. Si es text/plain
, entonces no tiene ningún formato especial. La URL que proporcionó devuelve Content-Type: application/json; charset=utf-8
para que se formatee correctamente y se resalte como JSON.
@jkbrzt exactamente. De hecho, el problema era que los encabezados del servidor eran text/plain
mientras que el cuerpo era un texto formateado como un cuerpo json (json bien formateado). Básicamente, el encabezado de respuesta Content-Type
no es application/json
. ¿Puede HTTPie
forzar el formato json en esos casos?
Comentario más útil
@jkbrzt exactamente. De hecho, el problema era que los encabezados del servidor eran
text/plain
mientras que el cuerpo era un texto formateado como un cuerpo json (json bien formateado). Básicamente, el encabezado de respuestaContent-Type
no esapplication/json
. ¿PuedeHTTPie
forzar el formato json en esos casos?