有时 API 响应包含大量数据。
给定一个返回 JSON 或 XML 的端点,能够做类似的事情会很酷
http http://myapi.endpoint/ -q "abc/xyz"
并且只能看到响应的“abc/xyz”子树。
+1,这太棒了
为此有一些外部工具:
- jq 用于 JSON 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的例子; 这个恰好也使用httpie-unixsocket通过/var/run/docker.sock
与 Docker 通信:
$ 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 很好地集成。 我计划在文档中添加一些示例,但现在这里是一个简单的示例:并且存在用于查询不同格式的其他工具。