Análise do JSON a partir da Linha de Comando
JSON é um formato de texto que você pode usar uma ferramenta para processar os textos em linha de comando, tais como o AWK (https://terminalroot.com.br/2014/12/tutorial-basico-de-awk.html) para processar respostas. Há uma fantástica ferramenta de análise de JSON que complementa o cURL, chamada de jq. Se você usar em um comando o carácter | (pipe) com o jq, pode-se extrair facilmente pedaços do JSON utilizando filters. Para download e como instalar o jq acesse https://github.com/stedolan/jq/wiki/Installation.
Vamos fazer um teste, vamos puxar algo interessante da API acessando api.github.com. Digite no cmd curl https://api.github.com | jq “.current_user_url”
O que aconteceu? A ferramenta jq analisou o JSON, e usando o filtro .current_user_url retornou uma resposta do JSON. Se você voltar no primeiro exemplo que fizemos, vai notar que tem uma linha na resposta com a seguinte informação: “current_user_url“: “https://api.github.com/user“,. Veja que tem um formato de chave/valor. Note que utilizamos a chave como filtro e retornou o valor.
Você viu também que há outras informações que pode não ser interessante para você. Neste caso podemos usar o modo silencioso (adicionando -s ao comando) do cURL para trazer só a resposta que queremos.
O filter é muito fácil de usar para obter a resposta do JSON. Para request mais complicadas (por exemplo, nós querermos obter uma lista pública de repositórios de um usuário), nós podemos ver o padrão do jq para passar parâmetros. Vamos pegar uma lista de repositórios e ver como extrair informações da resposta utilizando o jq: digite curl -s https://api.github.com/users/blackzig/repos, blackzig é meu nome de usuário no GitHub, se você tiver algum repositório na sua conta, coloque o nome do seu usuário.
A resposta que tivemos é um array de múltiplos itens. Para conseguir pegar um valor específico vamos fazer um novo comando.
Agora sim vamos utilizar o jq para filtrar uma informação específica. Digite no cmd curl -s https://api.github.com/users/blackzig/repos | jq “.[0].owner.id”
Veja que conseguir trazer apenas um valor específico de um mundo de informação do exemplo anterior. Então, você pode ver que o jq é uma ótima ferramenta para checar valores do JSON. Lembre-se que os valores chave/valor sempre devem estar entre aspas. Você não vai conseguir fazer uma verificação em um JSON se não estiver em um formato válido.
Se gostou do jq e quer saber mais acesse a documentação https://stedolan.github.io/jq/.
Debugando Chaves com o cURL
Como vimos o cURL é uma ótima ferramenta para verificar respostas que você espera obter. A resposta que vem no body é importante, mas as vezes você pode querer acessar o headers. Com o cURL é fácil fazer isto utilizando as chaves -i e -v. A chave -i imprime o headers do request, e a chave -v imprime o headers do request e response (o carácter > indica os dados do request e o < indica os dados do response): Vamos fazer um teste, digite curl -i https://api.github.com.
Agora digite curl -v https://api.github.com.
Com a chave -v a resposta vem com muitas informações como as pesquisas de DNS e a cadeia de SSL. Tome cuidado ao usar o jq nestes casos porque as respostas não são um JSON puro.
Building Tools with GitHub: Customize Your Workflow (English Edition)
#git #github
Deixe um comentário