Httpie: Kemampuan untuk memfilter JSON atau XML

Dibuat pada 5 Jan 2015  ·  5Komentar  ·  Sumber: httpie/httpie

Terkadang respons API berisi banyak data.

Mengingat titik akhir yang mengembalikan JSON atau XML, akan keren untuk dapat melakukan sesuatu seperti

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

dan hanya dapat melihat sub-pohon "abc/xyz" dari respons.

Komentar yang paling membantu

Saya khawatir ini sedikit di luar cakupan yang harus didukung oleh httpie. jq untuk JSON sangat baik dan terintegrasi dengan baik dengan HTTPie melalui pipa. Saya berencana menambahkan beberapa contoh ke dokumen, tapi ini yang sederhana untuk saat ini:

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

Dan alat lain ada untuk menanyakan format yang berbeda.

Semua 5 komentar

+1, ini akan luar biasa

Ada beberapa alat eksternal untuk ini:
- jq untuk JSON http://stedolan.github.io/jq/
- xmlstarlet dan lainnya untuk XML http://stackoverflow.com/a/15461774
Mengapa tidak menggunakannya saja?

@corpix Terima kasih atas

Ada pro dan kontra untuk alat yang terintegrasi. Saya berada di pagar tentang ini; Saya akan menyerahkannya kepada pengembang untuk menutup masalah ini jika mereka mau.

Saya khawatir ini sedikit di luar cakupan yang harus didukung oleh httpie. jq untuk JSON sangat baik dan terintegrasi dengan baik dengan HTTPie melalui pipa. Saya berencana menambahkan beberapa contoh ke dokumen, tapi ini yang sederhana untuk saat ini:

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

Dan alat lain ada untuk menanyakan format yang berbeda.

Berikut contoh lain penggunaan jq ; yang ini kebetulan juga menggunakan httpie-unixsocket untuk berkomunikasi dengan Docker melalui /var/run/docker.sock :

$ 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
}
Apakah halaman ini membantu?
0 / 5 - 0 peringkat