Dicas de Visual Studio Code: testando APIs REST com instruções curl via script | pt 15

Renato Groffe
4 min readAug 28, 2023

--

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:

Clique nesta imagem para visualizar com uma melhor resolução

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:

Clique nesta imagem para visualizar com uma melhor resolução
Clique nesta imagem para visualizar com uma melhor resolução

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):

https://github.com/renatogroffe/ASPNETCore7-MinimalAPIs-JWT-Swagger-Extensions-HttpFiles_ContagemAcessos

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:

Clique nesta imagem para visualizar com uma melhor resolução

E uma requisição GET que empregou este token para consumir um endpoint de contagem de acessos:

Clique nesta imagem para visualizar com uma melhor resolução

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:

Clique nesta imagem para visualizar com uma melhor resolução

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:

Clique nesta imagem para visualizar com uma melhor resolução

--

--

Renato Groffe
Renato Groffe

Written by Renato Groffe

Microsoft Most Valuable Professional (MVP), Multi-Plataform Technical Audience Contributor (MTAC), Software Engineer, Technical Writer and Speaker

No responses yet