Httpie: Capacidade de filtrar JSON ou XML

Criado em 5 jan. 2015  ·  5Comentários  ·  Fonte: httpie/httpie

Às vezes, as respostas da API contêm muitos dados.

Dado um endpoint que retorna JSON ou XML, seria legal poder fazer algo como

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

e só consegue ver a subárvore "abc/xyz" da resposta.

Comentários muito úteis

Receio que isso esteja um pouco além do escopo do que o httpie deve suportar. jq para JSON é excelente e se integra bem com HTTPie via pipes. Estou planejando adicionar alguns exemplos aos documentos, mas aqui está um simples por enquanto:

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

E existem outras ferramentas para consultar diferentes formatos.

Todos 5 comentários

+1, isso seria incrível

Existem algumas ferramentas externas para isso:
- jq para JSON http://stedolan.github.io/jq/
- xmlstarlet e outros para XML http://stackoverflow.com/a/15461774
Por que não simplesmente usá-los?

@corpix Obrigado pelos links; não estava ciente deles.

Há prós e contras em uma ferramenta integrada. Estou em cima do muro sobre isso; Vou deixar para os desenvolvedores fecharem este problema, se assim o desejarem.

Receio que isso esteja um pouco além do escopo do que o httpie deve suportar. jq para JSON é excelente e se integra bem com HTTPie via pipes. Estou planejando adicionar alguns exemplos aos documentos, mas aqui está um simples por enquanto:

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

E existem outras ferramentas para consultar diferentes formatos.

Aqui está outro exemplo de uso de jq ; este também usa httpie-unixsocket para se comunicar com o Docker em /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
}
Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

a-x- picture a-x-  ·  7Comentários

cunde picture cunde  ·  7Comentários

tonsV2 picture tonsV2  ·  4Comentários

mattotodd picture mattotodd  ·  3Comentários

pyvotal-cguers picture pyvotal-cguers  ·  5Comentários