Httpie: 能够过滤 JSON 或 XML

创建于 2015-01-05  ·  5评论  ·  资料来源: httpie/httpie

有时 API 响应包含大量数据。

给定一个返回 JSON 或 XML 的端点,能够做类似的事情会很酷

http http://myapi.endpoint/ -q "abc/xyz"

并且只能看到响应的“abc/xyz”子树。

最有用的评论

恐怕这稍微超出了 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"

并且存在用于查询不同格式的其他工具。

所有5条评论

+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
}
此页面是否有帮助?
0 / 5 - 0 等级

相关问题

loretoparisi picture loretoparisi  ·  6评论

ghost picture ghost  ·  5评论

rshurts picture rshurts  ·  5评论

Abdallah-Obaid picture Abdallah-Obaid  ·  4评论

chuma picture chuma  ·  3评论