Como testar APIs e integrações localmente

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.

dashboard ngrok

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!


Subscreva

Fique por dentro de tudo o que acontece no mundo Go.

Deixe uma resposta