Esta é uma API RESTful completa para consulta de dados meteorológicos, desenvolvida em .NET 8 com uma arquitetura limpa e boas práticas de desenvolvimento. O projeto é totalmente containerizado com Docker e inclui uma configuração de proxy reverso com Nginx.
- Dados Meteorológicos Atuais: Obtenha a temperatura, umidade, pressão, velocidade do vento e outras informações em tempo real.
- Previsão do Tempo: Consulte a previsão para os próximos 7 dias, com detalhes diários e por hora.
- Dados Históricos: Acesse dados meteorológicos de dias anteriores (simulados).
- Alertas Meteorológicos: Receba alertas ativos para tempestades, ventos fortes, etc.
- Busca de Localizações: Encontre localizações por nome, região ou país.
- Geocodificação Reversa: Obtenha a localização mais próxima a partir de coordenadas geográficas.
- Cache em Memória: Otimiza as consultas com um sistema de cache para dados de clima e localizações.
- Proxy Reverso com Nginx: Inclui configuração de proxy reverso com Nginx para segurança e performance.
- Containerização com Docker: Totalmente containerizado com Docker e Docker Compose para fácil deployment.
O projeto segue uma arquitetura limpa, dividida em quatro camadas principais:
- Core: Contém as entidades, enums, exceções e interfaces do domínio.
- Application: Contém os DTOs e a lógica de aplicação.
- Infrastructure: Contém as implementações dos serviços, acesso a dados e integrações com APIs externas.
- WebAPI: A camada de apresentação, com os controladores da API, middleware e configuração.
Para executar o projeto, você precisa ter o Docker e o Docker Compose instalados. Com eles, basta executar o seguinte comando na raiz do projeto:
docker-compose up -dA API estará disponível em http://localhost:5000 e a documentação Swagger em http://localhost:5000/swagger.
A API possui os seguintes endpoints principais:
GET /api/v1/weather/current/location/{locationId}: Dados atuais por ID da localização.POST /api/v1/weather/current/coordinates: Dados atuais por coordenadas.GET /api/v1/weather/forecast/location/{locationId}: Previsão por ID da localização.POST /api/v1/weather/forecast/coordinates: Previsão por coordenadas.POST /api/v1/weather/history/location/{locationId}: Dados históricos por ID da localização.GET /api/v1/weather/alerts/location/{locationId}: Alertas por ID da localização.POST /api/v1/locations/search: Busca de localizações.GET /api/v1/locations/{id}: Localização por ID.POST /api/v1/locations/reverse-geocode: Geocodificação reversa.
Para mais detalhes sobre os endpoints e seus parâmetros, consulte a documentação Swagger.