Dicas de Visual Studio Code: testando APIs REST com instruções curl via script | pt 15
Esse é mais um artigo (parte 15) da série que venho publicando aqui no blog com dicas, truques e novidades no uso do Visual Studio Code. Desta vez abordarei o teste de APIs REST a partir do VS Code, utilizando novamente scripts e agora instruções curl para o envio de requisições HTTP.
Nos links a seguir estão os artigos publicados anteriormente, caso você deseje acessar esses conteúdos ou mesmo revê-los:
Dicas de Visual Studio Code: testando APIs REST via scripts | pt 14
Dicas de Visual Studio Code: criando mapas mentais | pt 13
Dicas de Visual Studio Code: testes com browser interno, geração de GUIDs | pt 12
Dicas de Visual Studio Code: extensões Deprecated, painel Problems, Marketplace | pt 11
Dicas de Visual Studio Code: diagramas para Kubernetes e abrindo arquivos no browser | pt 10
Dicas de Visual Studio Code: criando diagramas de arquitetura | pt9
Dicas de Visual Studio Code: testes de carga e geração de senhas fortes | pt8
Dicas de Visual Studio Code: To-do list e comparação de arquivos | pt7
Dicas de Visual Studio Code: Git Graph e acessando repositórios Git no browser | pt6
Dicas de Visual Studio Code: integração com Git via Terminal e Kubernetes Templates | pt5
Dicas de Visual Studio Code: testes de APIs REST e integração com Azure DevOps | pt4
Dicas de Visual Studio Code: extensões para MongoDB e Git | pt3
Dicas de Visual Studio Code: extensões para Redis e geração de arquivos .gitignore | pt2
Dicas de Visual Studio Code: extensão para Kubernetes | pt 1
REST Client: testando APIs REST a partir de scripts… E também com instruções curl!!!
Na parte 14 desta série demonstrei a utilização da extensão REST Client:
Com arquivos de scripts (extensão .http ou .rest) contendo requisições HTTP, de forma a possibilitar o teste de APIs REST com instruções que guardam alguma relação via código:
Podemos também ir além com a extensão REST Client, tirando proveito de instruções baseadas na ferramenta de linha de comando curl.
Mas no que esta capacidade seria realmente útil?
Muitos profissionais (Devs, QAs e de outras áreas de TI) já estão familiarizados com a interface gráfica do Swagger/OpenAPI, realizando testes em APIs de forma rápida e assim validando sem grandes complicações os comportamentos esperados para uma funcionalidade. Entretanto, um detalhe importante costuma passar desapercebido: a própria interface do Swagger costuma apresentar o código de uma requisição enviada como uma instrução curl.
Demonstrei isto inclusive em uma live recente no Canal .NET, com a gravação já estando disponível no YouTube:
Para os testes apresentados neste artigo fiz uso de uma API REST de contagem de acessos que foi disponibilizada no GitHub (incluindo um arquivo de script .http):
Caso achem útil a solução, peço por favor um ⭐️ no repositório do GitHub apoiando. Fica também o convite para que vocês me sigam lá!
Na próxima imagem podemos observar o resultado de uma requisição POST que obteve um token JWT:
E uma requisição GET que empregou este token para consumir um endpoint de contagem de acessos:
Em ambos os casos o Swagger trouxe uma seção com uma instrução curl (destacada em vermelho), com as configurações de cada requisição. Podemos então copiar este código em um script .http ou .rest, beneficiando-se de recursos como o suporte a variáveis da extensão REST Client.
A próxima listagem exemplifica isto, com o token da primeira solicitação sendo informado no Header da segunda requisição HTTP:
# Mais informacoes em:
# https://marketplace.visualstudio.com/items?itemName=humao.rest-client
@baseUrl=http://localhost:5190
@user=usr01_apis
@password=Usr01ApiValido01!
# @name autenticar
curl -X 'POST' \
'{{baseUrl}}/login' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"userID": "{{user}}",
"password": "{{password}}"
}'
###
@token = {{autenticar.response.body.$.accessToken}}
# @name consumir
curl -X 'GET' \
'{{baseUrl}}/contador' \
-H 'accept: application/json' \
-H 'Authorization: Bearer {{token}}'
Na animação a seguir podemos observar o token JWT sendo obtido por meio da primeira instrução curl:
Já na próxima animação temos o endpoint de contagem de acessos sendo consumido, com a segunda instrução curl utilizando o token JWT obtido através da primeira requisição: