Neste artigo irei apresentar uma nova maneira de testar suas Web APIs .Net5 usando Httprepl.
Httprepl (HTTP Read-Eval-Print Loop) é uma ferramenta de linha comando que nos permite testar web apis de forma simples e rápida e é uma alternativa á outras soluções como Swagger e Postman. Vamos ver a seguir como instalar, configurar e como usá-la.
Procedimento para instalação
- Certifique-se que você tem a sdk do dotnet instalado
- Instale a ferramenta Httprepl
Se tudo ocorrer bem, aparecerá uma mensagem informando que a instalação foi bem sucedida. No caso da minha instalação, a mensagem também informava que o caminho “.dotnet/tools” não estava na varíavel de ambiente PATH e sugere que seja usado o comando EXPORT para fazer esta adição na seção atual.
- Execute o comando httprepl. Você deve ver algo como isto:
Sucesso 😎 ? Ótimo, a ferramenta está instalada e pronta para usar
Ainda não 🙁 ? Encontrou uma mensagem como esta abaixo?
Tudo bem, basta criar a variável de ambiente DOTNET_ROOT usando o seguinte comando : export DOTNET_ROOT=/snap/dotnet-sdk/current
Testando uma Web API com HttpRepl
- Criar uma nova API com dotnet CLI em uma nova pasta chamada HelloAPI
- Abrir o Visual Studio Code
- Com o Visual Studio Code aberto, apagar os arquivos WeatherForecast e o controlador WeatherForecastController
- Criar um novo controlador HelloController com as ações GetHelloMessage e PostHelloMessage
using Microsoft.AspNetCore.Mvc;
namespace HelloAPI.Controllers;
[ApiController]
[Route("[controller]")]
public class HelloController : ControllerBase
{
public HelloController()
{}
[HttpGet]
public string GetHelloMessage()
{
return "Hello API";
}
[HttpPost]
public string PostHelloMessage([FromBody]string name)
{
return ($"Hello, {name}");
}
}
- No Visual Studio Code, abrir um novo terminal ( Ctrl + ` ) e executar o comando dotnet run para excutar sua API em localhost. Preste atenção ao número da porta que será usado. Neste exemplo, estou usando a porta de número 5002 (este número pode variar).
Abrir um novo terminal e executar o comando httprepl, seguido do endereço de execução da sua api. No meu caso, ficou assim.
Se a após a execução do comando seu cursor ficar parado em http://localhost:5002/>, parabéns! A ferramenta está em execução e conseguiu se conectar à sua api.
Agora podemos listar e navegar pelas APIs em execução em localhost e suas ações usando os comando ls e cd, da mesma forma que faríamos se estivéssemos navegando em uma estrutura de diretórios.
- Listando todas APIs/ controladores em localhost :
- Conectando a um controlador (HelloController)
- Listando todas as ações do controlador HelloController
Testando o método GetHelloMessage
Para testar o método GetHelloMessage é muito simples, basta estar no “diretório” Hello e digitar Get.
Testando o método PostHelloMessage
Antes de testar as ações PUT e POST devemos especificar um editor padrão onde poderemos editar o payload da chamada (você só precisa fazer isso uma vez)
(Obs: Confira antes o diretório de instalação do Visual Studio Code, o meu está instalado em /snap/bin/code)
Se indicarmos o Visual Studio Code como editor padrão, ainda devemos fazer uma configuração adicional para que a execução do comando prossiga apenas quando o arquivo de payload for fechado.
Um pouco trabalhoso 🙄 , mas lembre-se que vamos fazer isto apenas uma vez.
Agora podemos seguir com o teste das ações POST/ PUT:
- Finalmente, entre no “diretório” Hello e digite Post.
http://localhost:5002/Hello/Hello> post
Um novo arquivo com a extensão .json vai se abrir na janela do editor. Não se preocupe, este arquivo não fará parte do seu projeto, ele é apenas temporário.
- Digite os parâmetros de entrada do método PostHelloMessage.
- Salve e feche o arquivo .json e observe a saída na janela do terminal.
Conclusão
Usar Httprepl é uma nova opção para testes de APIs, além dos já conhecidos Postman e Swagger.
No início achei um pouco complicado mas já estou me acostumando à linha de comando. Outro benefício que tenho encontrado é possibilidade de continuar trabalhando na própria IDE do Visual Studio Code sem precisar navegar entre abas do Postman e do navegador, parece bobagem mas evita a perda de foco.
Materiais de referência
Microsoft Docs: https://docs.microsoft.com/en-us/aspnet/core/web-api/http-repl/?view=aspnetcore-6.0&tabs=linux