Httpie: Pretty Print JSON ๋ณธ๋ฌธ

์— ๋งŒ๋“  2015๋…„ 11์›” 13์ผ  ยท  6์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: httpie/httpie

๋‹ค์Œ๊ณผ ๊ฐ™์€ bash ์ฝ˜์†”์—์„œ ํ˜•์‹์„ ์ง€์ •ํ•˜๊ธฐ ์œ„ํ•ด JSON ์ถœ๋ ฅ ๋ณธ๋ฌธ์„ ์˜ˆ์˜๊ฒŒ ์ธ์‡„ํ•˜๋Š” ๋ฐฉ๋ฒ•

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

๋‚ด ๋ช…๋ น์€ ์ง€๊ธˆ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

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

--pretty ์˜ต์…˜์€ ์ถœ๋ ฅ ๋ณธ๋ฌธ์„ ์˜ˆ์˜๊ฒŒ ์ธ์‡„ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๊นŒ? ์ถœ๋ ฅ ๋ณธ๋ฌธ์„ ์˜ˆ์˜๊ฒŒ ๊พธ๋ฏธ์ง€ ์•Š๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ๋Œ€์‹  json์„ ์ผ๋ฐ˜ ํ…์ŠคํŠธ๋กœ ์ธ์‡„ํ•ฉ๋‹ˆ๋‹ค.

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

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@jkbrzt ์ •ํ™•ํžˆ. ์‚ฌ์‹ค ๋ฌธ์ œ๋Š” ์„œ๋ฒ„ ํ—ค๋”๊ฐ€ text/plain ๋ฐ˜๋ฉด ๋ณธ๋ฌธ์€ json ๋ณธ๋ฌธ(์ •ํ˜•ํ™”๋œ json)์œผ๋กœ ํ˜•์‹์ด ์ง€์ •๋œ ํ…์ŠคํŠธ๋ผ๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์‘๋‹ต ํ—ค๋” Content-Type ๋Š” application/json ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ HTTPie json ํ˜•์‹์„ ๊ฐ•์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋ชจ๋“  6 ๋Œ“๊ธ€

์ด๊ฒƒ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

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

@jkbrzt ์˜ˆ, ํ•˜์ง€๋งŒ ์ด๊ฒƒ์€ body ์‘๋‹ต์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋ชธ์ด ์˜ˆ์˜์ง€ ์•Š๊ณ  headers ๋งŒ ์˜ˆ์œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@loretoparisi ์ด๊ฒƒ์€ ์‘๋‹ต ๋ณธ๋ฌธ์ž…๋‹ˆ๋‹ค. http://httpbin.org/get์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค

์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ์‘๋‹ต ํ—ค๋”์— ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ json ํ˜•์‹์œผ๋กœ ์ž˜ ํ˜•์‹ํ™”๋œ ์‘๋‹ต ๋ณธ๋ฌธ์„ ์‹œ๋„ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

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

ํšจ๊ณผ๊ฐ€์žˆ๋‹ค.
http ์‘๋‹ต ํ—ค๋”๊ฐ€ text/plain

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

๊ฒฐ๊ณผ ํ˜•์‹์€ ๋‹จ์ˆœํ•ฉ๋‹ˆ๋‹ค.

HTTPie๋Š” ์‘๋‹ต Content-Type ํ—ค๋”๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. text/plain ์ด๋ฉด ํŠน๋ณ„ํ•œ ์„œ์‹์„ ์ง€์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ œ๊ณตํ•œ URL์€ Content-Type: application/json; charset=utf-8 ๋ฐ˜ํ™˜ํ•˜๋ฏ€๋กœ ์˜ฌ๋ฐ”๋ฅธ ํ˜•์‹์ด ์ง€์ •๋˜๊ณ  JSON์œผ๋กœ ๊ฐ•์กฐํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

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

@jkbrzt ์ •ํ™•ํžˆ. ์‚ฌ์‹ค ๋ฌธ์ œ๋Š” ์„œ๋ฒ„ ํ—ค๋”๊ฐ€ text/plain ๋ฐ˜๋ฉด ๋ณธ๋ฌธ์€ json ๋ณธ๋ฌธ(์ •ํ˜•ํ™”๋œ json)์œผ๋กœ ํ˜•์‹์ด ์ง€์ •๋œ ํ…์ŠคํŠธ๋ผ๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์‘๋‹ต ํ—ค๋” Content-Type ๋Š” application/json ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ HTTPie json ํ˜•์‹์„ ๊ฐ•์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰