GoExpert Weather API Lab 01
Uma API REST em Go que recebe um CEP brasileiro, identifica a cidade e retorna o clima atual (temperatura em Celsius, Fahrenheit e Kelvin). ConstruĂda com clean architecture e pronta para deploy no Google Cloud Run.
Funcionalidades
- Recebe um CEP válido de 8 dĂgitos
- Busca a cidade usando a API ViaCEP
- Consulta o clima atual usando a WeatherAPI
- Retorna temperatura em Celsius, Fahrenheit e Kelvin
- Tratamento de erros para CEP inválido ou não encontrado
- CompatĂvel com Docker e Podman
- Pronto para Cloud Run
Requisitos
- Go 1.22+
- Chave da WeatherAPI
- Docker ou Podman (para conteinerização)
Variáveis de Ambiente
WEATHER_API_KEY: Sua chave da WeatherAPI (obrigatĂłria)
Executando Localmente
-
Defina a variável de ambiente:
- No PowerShell:
$env:WEATHER_API_KEY="sua_chave_aqui"; go run ./cmd/lab01
- No Linux/macOS (bash/zsh):
WEATHER_API_KEY=sua_chave_aqui go run ./cmd/lab01
- Ou crie um arquivo
.env (apenas para desenvolvimento local):
WEATHER_API_KEY=sua_chave_aqui
E use github.com/joho/godotenv se quiser carregá-la automaticamente.
-
Execute os testes com cobertura:
go test ./... -coverprofile=coverage.out
go tool cover -func=coverage
go tool cover -html=coverage
Build e Execução com Docker/Podman
-
Build da imagem:
podman build -t goexpert-weather-api .
docker build -t goexpert-weather-api .
-
Execute o container:
podman run --rm -p 8080:8080 -e WEATHER_API_KEY=sua_chave_aqui goexpert-weather-api
docker run --rm -p 8080:8080 -e WEATHER_API_KEY=sua_chave_aqui goexpert-weather-api
Uso da API
- Endpoint:
GET /zipcode/{zipcode}/weather
- Resposta de Sucesso:
- HTTP 200
- Body:
{ "temp_C": 28.5, "temp_F": 83.3, "temp_K": 301.65 }
- CEP Inválido:
- HTTP 422
- Body:
invalid zipcode
- CEP NĂŁo Encontrado:
- HTTP 404
- Body:
can not find zipcode
Estrutura do Projeto
cmd/lab01/ — Ponto de entrada principal
internal/entity/ — Entidades de domĂnio e interfaces
internal/infra/repo/ — Repositórios de APIs externas
internal/infra/web/ — Handlers HTTP e servidor web
internal/usecase/ — Casos de uso da aplicação
Link da entrega
https://goexpert-weather-api-lab-01-516049214932.us-central1.run.app/zipcode/88820000/weather