Muitas vezes quando estamos desenvolvendo uma nova aplicação ou integrando uma aplicação existente à um outro sistema, precisamos testar um endpoint nosso recebendo uma requisição externa.
A forma mais comum para testar esse endpoint é subindo o sistema para um ambiente de desenvolvimento. No entanto, subir a aplicação para um servidor a cada mudança, além de dar muito trabalho, rouba muito tempo do nosso dia de trabalho.
Por isso, no post de hoje vou mostrar como podemos testar chamadas externas à uma API que está rodando localmente.
Primeiramente vamos criar um arquivo main.go com uma API simples que retorna um “Olá Mundo!”.
package main import ( "io" "log" "net/http" ) func main() { http.HandleFunc("/", func(rw http.ResponseWriter, _ *http.Request) { io.WriteString(rw, "Olá Mundo!") }) log.Fatal(http.ListenAndServe(":8000", nil)) }
Feito isso, vamos executar um go run main.go
e em outro terminal executar o seguinte comando:
$ curl http://localhost:8000
Se você recebeu um Olá Mundo!
como resposta, então está tudo certo com a API.
Para conseguir expor essa API para receber requisições externas, vamos usar um programa chamado ngrok, programa que uso há mais ou menos uns 6 anos.
Primeiro passo é criar uma conta para poder pegar um token de autenticação. Eu criei minha conta usando o login do github, mas você pode fazer como preferir.
Já logado no painel administrativo, vamos em Getting Started > Setup & Installation.

Nessa tela, faça download do ngrok para seu sistema operacional e depois faça a descompactação do arquivo zip na sua máquina. Agora, pelo terminal, vá até a pasta onde você descompactou o zip e execute o comando do item 2 dá página onde baixamos o ngrok.
Esse segundo passo é importante, pois ele vai autenticar nosso o ngrok usando o token da conta que criamos.
Com tudo configurado, vamos iniciar o ngrok com o comando ./ngrok http [PORTA]
, que em nosso caso será ./ngrok http 8000
.
Como podemos ver no terminal, ele nos dá 2 endereços de Forwarding. Esses são os dois endereços que podemos usar para acessar nossa API de forma externa à nossa máquina.
No entanto, executando o comando somente dessa forma, o endereço que aparece ali vai mudar sempre que o comando for executado, o que pode ser um problema em alguns casos.
Para evitar esse problema, podemos executar o ngrok com o seguinte comando.
./ngrok http 8000 -subdomain=aprendagolang
Agora, sempre que o ngrok subir ele terá o mesmo endereço.
Se você fizer o CURL para o endereço que está ai no seu Forwarding, verá que a request será logada no terminal. Caso você queira mais informações sobre as requests recebidas, ou queira fazer um “replay” da request, abra seu navegador em http://127.0.0.1:4040.
Deixem suas dúvidas nos comentários.
Até a próxima!