๋๋๋ก API ์๋ต์๋ ๋ง์ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋ฉ๋๋ค.
JSON ๋๋ XML์ ๋ฐํํ๋ ๋์ ์ด ์ฃผ์ด์ง๋ฉด ๋ค์๊ณผ ๊ฐ์ ์์ ์ ์ํํ ์ ์๋ ๊ฒ์ด ์ข์ต๋๋ค.
http http://myapi.endpoint/ -q "abc/xyz"
์๋ต์ "abc/xyz" ํ์ ํธ๋ฆฌ๋ง ๋ณผ ์ ์์ต๋๋ค.
+1, ์ด๊ฒ์ ๊ต์ฅํ ๊ฒ์ ๋๋ค
์ด๋ฅผ ์ํ ๋ช ๊ฐ์ง ์ธ๋ถ ๋๊ตฌ๊ฐ ์์ต๋๋ค.
- JSON์ฉ jq http://stedolan.github.io/jq/
- xmlstarlet ๋ฐ ๊ธฐํ XML์ฉ http://stackoverflow.com/a/15461774
๋จ์ํ ์ฌ์ฉํ์ง ์๋ ์ด์ ๋ ๋ฌด์์
๋๊น?
@corpix ๋งํฌ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๊ทธ๋ค์ ์์ง ๋ชปํ์ต๋๋ค.
ํตํฉ ๋๊ตฌ์๋ ์ฅ๋จ์ ์ด ์์ต๋๋ค. ๋๋ ์ด๊ฒ์ ๋ํด ์ธํ๋ฆฌ์ ์์ต๋๋ค. ๊ฐ๋ฐ์๊ฐ ์ํ๋ ๊ฒฝ์ฐ ์ด ๋ฌธ์ ๋ฅผ ์ข ๋ฃํ๋๋ก ๋งก๊น๋๋ค.
์ด๊ฒ์ด httpie๊ฐ ์ง์ํด์ผ ํ๋ ๋ฒ์๋ฅผ ์ฝ๊ฐ ๋ฒ์ด๋ฉ๋๋ค. JSON์ฉ jq
๋ ํ๋ฅญํ๊ณ ํ์ดํ๋ฅผ ํตํด HTTPie์ ์ ํตํฉ๋ฉ๋๋ค. ๋ฌธ์์ ๋ช ๊ฐ์ง ์์ ๋ฅผ ์ถ๊ฐํ ๊ณํ์ด์ง๋ง ์ง๊ธ์ ๊ฐ๋จํ ์์ ์
๋๋ค.
$ http httpbin.org/get
HTTP/1.1 200 OK
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: *
Connection: keep-alive
Content-Length: 398
Content-Type: application/json
Date: Wed, 07 Jan 2015 19:03:04 GMT
Server: gunicorn/18.0
Via: 1.1 vegur
{
"args": {},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Connect-Time": "1",
"Connection": "close",
"Host": "httpbin.org",
"Total-Route-Time": "1",
"User-Agent": "HTTPie/0.8.0",
"Via": "1.1 vegur",
"X-Request-Id": "2b2e03a0-0449-40f1-9027-73bfe9edf31f"
},
"url": "http://httpbin.org/get"
}
$ http httpbin.org/get | jq '.headers["User-Agent"]'
"HTTPie/0.8.0"
๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ํ์์ ์ฟผ๋ฆฌํ๊ธฐ ์ํ ๋ค๋ฅธ ๋๊ตฌ๊ฐ ์์ต๋๋ค.
๋ค์์ jq ๋ฅผ ์ฌ์ฉํ๋ ๋ ๋ค๋ฅธ ์์
๋๋ค. ์ด๊ฒ์ /var/run/docker.sock
ํตํด Docker์ ํต์ ํ๊ธฐ ์ํด httpie-unixsocket ๋ ์ฌ์ฉํฉ๋๋ค.
$ http http+unix://%2Fvar%2Frun%2Fdocker.sock/info | jq .RegistryConfig
{
"InsecureRegistryCIDRs": [
"127.0.0.0/8"
],
"IndexConfigs": {
"docker.io": {
"Name": "docker.io",
"Mirrors": null,
"Secure": true,
"Official": true
}
},
"Mirrors": null
}
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ด๊ฒ์ด httpie๊ฐ ์ง์ํด์ผ ํ๋ ๋ฒ์๋ฅผ ์ฝ๊ฐ ๋ฒ์ด๋ฉ๋๋ค. JSON์ฉ
jq
๋ ํ๋ฅญํ๊ณ ํ์ดํ๋ฅผ ํตํด HTTPie์ ์ ํตํฉ๋ฉ๋๋ค. ๋ฌธ์์ ๋ช ๊ฐ์ง ์์ ๋ฅผ ์ถ๊ฐํ ๊ณํ์ด์ง๋ง ์ง๊ธ์ ๊ฐ๋จํ ์์ ์ ๋๋ค.๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ํ์์ ์ฟผ๋ฆฌํ๊ธฐ ์ํ ๋ค๋ฅธ ๋๊ตฌ๊ฐ ์์ต๋๋ค.