Httpie: Möglichkeit zum Filtern von JSON oder XML

Erstellt am 5. Jan. 2015  ·  5Kommentare  ·  Quelle: httpie/httpie

Manchmal enthalten API-Antworten viele Daten.

Bei einem Endpunkt, der JSON oder XML zurückgibt, wäre es cool, so etwas tun zu können

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

und nur den Unterbaum "abc/xyz" der Antwort sehen.

Hilfreichster Kommentar

Ich fürchte, dies geht etwas über den Rahmen dessen hinaus, was httpie unterstützen sollte. jq für JSON ist hervorragend und lässt sich über Pipes gut in HTTPie integrieren. Ich habe vor, den Dokumenten einige Beispiele hinzuzufügen, aber hier ist vorerst ein einfaches:

$ 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"

Und es gibt noch andere Tools zum Abfragen verschiedener Formate.

Alle 5 Kommentare

+1, das wäre toll

Dafür gibt es einige externe Tools:
- jq für JSON http://stedolan.github.io/jq/
- xmlstarlet und andere für XML http://stackoverflow.com/a/15461774
Warum verwenden Sie sie nicht einfach?

@corpix Danke für die Links; war sich ihrer nicht bewusst.

Ein integriertes Tool hat Vor- und Nachteile. Ich bin diesbezüglich am Zaun; Ich überlasse es den Entwicklern, dieses Problem zu schließen, wenn sie es wünschen.

Ich fürchte, dies geht etwas über den Rahmen dessen hinaus, was httpie unterstützen sollte. jq für JSON ist hervorragend und lässt sich über Pipes gut in HTTPie integrieren. Ich habe vor, den Dokumenten einige Beispiele hinzuzufügen, aber hier ist vorerst ein einfaches:

$ 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"

Und es gibt noch andere Tools zum Abfragen verschiedener Formate.

Hier ist ein weiteres Beispiel für die Verwendung von jq ; dieser verwendet zufällig auch httpie-unixsocket , um mit Docker über /var/run/docker.sock zu kommunizieren:

$ 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
}
War diese Seite hilfreich?
0 / 5 - 0 Bewertungen