Httpie: Capacidad para filtrar JSON o XML

Creado en 5 ene. 2015  ·  5Comentarios  ·  Fuente: httpie/httpie

A veces, las respuestas de la API contienen muchos datos.

Dado un punto final que devuelve JSON o XML, sería genial poder hacer algo como

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

y solo puede ver el subárbol "abc/xyz" de la respuesta.

Comentario más útil

Me temo que esto está un poco más allá del alcance de lo que debería admitir httpie. jq para JSON es excelente y se integra bien con HTTPie a través de canalizaciones. Planeo agregar algunos ejemplos a los documentos, pero aquí hay uno simple por ahora:

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

Y existen otras herramientas para consultar diferentes formatos.

Todos 5 comentarios

+1, esto sería genial

Hay algunas herramientas externas para esto:
- jq para JSON http://stedolan.github.io/jq/
- xmlstarlet y otros para XML http://stackoverflow.com/a/15461774
¿Por qué no simplemente usarlos?

@corpix Gracias por los enlaces; no era consciente de ellos.

Hay ventajas y desventajas en una herramienta integrada. Estoy indeciso sobre esto; Dejaré que los desarrolladores cierren este problema si lo desean.

Me temo que esto está un poco más allá del alcance de lo que debería admitir httpie. jq para JSON es excelente y se integra bien con HTTPie a través de canalizaciones. Planeo agregar algunos ejemplos a los documentos, pero aquí hay uno simple por ahora:

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

Y existen otras herramientas para consultar diferentes formatos.

Aquí hay otro ejemplo del uso de jq ; este también usa httpie-unixsocket para comunicarse con Docker sobre /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
}
¿Fue útil esta página
0 / 5 - 0 calificaciones