Pular para o conteúdo principal

Filtragem de retorno de API com JSONPath e JMESPath

O que são JSONPath e JMESPath?​

JSONPath e JMESPath são linguagens de consulta usadas para extrair dados de estruturas JSON. JSONPath é inspirada em XPath (para XML) e permite navegar e selecionar elementos JSON com uma sintaxe similar. JMESPath oferece uma sintaxe própria, mais funcional, que permite a transformação e filtragem de dados JSON de forma declarativa, facilitando a manipulação de dados complexos com expressões compactas e eficientes.

Filtrando a resposta com JMESPath​

Nas habilidades do tipo Requisição de API, o campo Formatação da Resposta recebe uma expressão JMESPath que formata a resposta recebida da API. É nele que você informa o que deve ser filtrado ou extraído.

Considere uma API que retorna uma lista de usuários neste formato:

[
{
"nome": "Ana",
"idade": 30,
"hobbies": ["surfe", "leitura"],
"endereco": { "cidade": "Vitória", "estado": "ES" }
},
{
"nome": "Bruno",
"idade": 41,
"hobbies": ["xadrez"],
"endereco": { "cidade": "Serra", "estado": "ES" }
}
]

Para trazer apenas as cidades listadas no endereço de cada usuário, use:

[*].endereco.cidade

Para filtrar os usuários que têm surfe como hobby e trazer apenas nome, idade e endereço completo, use:

[?contains(hobbies, 'surfe')].{nome: nome, idade: idade, endereco: endereco}

Por que utilizar a filtragem?​

Dependendo do modelo de linguagem que você utiliza, ele pode ter uma janela de contexto menor, e a maioria das APIs traz resultados muito detalhados. Filtrando os resultados, podemos prevenir que haja um estouro da janela de contexto do modelo.

A filtragem também beneficia modelos com grande capacidade de tokens, já que menos dados influenciam a geração da resposta final. De forma complementar, quanto menos tokens gastos por chamada, menos créditos são gastos no plano mensal, permitindo que mais interações ocorram.

Conclusão​

A filtragem é extremamente útil para encurtar respostas extensas de APIs, o que garante melhores respostas e custos mais baixos. Ambas as linguagens estão extensamente documentadas online. Recomendamos os seguintes sites para avaliar seus termos de pesquisa: