Skip to content

Ang3lExtreme/weatherapi

Repository files navigation

WeatherAPI - API de Clima em .NET

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.

Funcionalidades

  • 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.

Arquitetura

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.

Como Executar

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 -d

A API estará disponível em http://localhost:5000 e a documentação Swagger em http://localhost:5000/swagger.

Endpoints da API

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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published