Skip to content

pedrogamedev/weatherAPI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PT-BR

Visão Geral

Um projeto, destinado à aprendizagem pessoal, que implementa Rate Limiting e Client Side Caching com o objetivo de criar uma API robusta voltada para dados climáticos. Para acessar dados climáticos foi-se utilizado a API 3rd party Visual Crossing Weather API.

Durante o projeto, segui padrões para organizar commits através da especificação Conventional Commits e criei um padronizamento das pastas voltadas à seção de testes. A API 3rd party tem um limite diário de requisições.

Tecnologias Usadas

  • Java
  • Maven
  • Intellij IDEA
  • Springboot
  • JUnit
  • Mockito
  • Redis
  • Bucket4J

Arquitetura

O projeto não segue o padrão REST nem implementa HATEOAS. É dividido nas seguintes camadas:

  • Controller: responsável pelo processamento de requisições.
  • Service: responsável pela regra de negócio, a conexão com o servidor redis e a conexão com a API 3rd party.
  • Redis: responsável pelo client-side caching.
  • Bucket4J: responsável pelo rate-limiting.
projarchitecture

Demo

Pegar informações num período de até 5 dias -> (GET) /weather/get

image

Pega informações do clima num determinado local num período de até 5 dias. Necessário colocar o local (location), data de início (startDate) e data de término (endDate). Retorna horário, temperatura média, descrição e sensação térmica.

Como rodar:

----> Para obter uma API KEY, crie uma conta no openvisual <----

Manualmente 💻

Pré-Requisitos
  • Java 21
  • Redis
  • Download do .jar do projeto
Passo a passo
  1. Inicialize o servidor Redis.
  2. Abra o terminal numa pasta contendo o projeto.
  3. Configure as seguintes variavéis do ambiente: API_KEY, REDIS_PASSWORD.
  4. Use o comando "java -jar your-application.jar" para iniciar o projeto.

Pronto! O projeto inicializará e você conseguirá interagir com ele mandando requisições HTTP através de aplicativos como Postman.

Docker 🐳

Pré-Requisitos
  • Docker
  • Download do projeto com docker
Passo a passo
  1. Inicialize o docker.
  2. Abra o terminal numa pasta contendo o projeto.
  3. Altere as variáveis do ambiente no arquivo .env.
  4. Use o comando 'docker-compose up'.

Pronto! O projeto inicializará e você conseguirá interagir com ele mandando requisições HTTP através de aplicativos como Postman.

Testes

Os testes seguem a seguinte nomenclatura para seus nomes:

nomeOriginalDaFunção_EstadoAtual_ComportamentoDesejado

Então, quando testamos, com o objetivo de averiguar o "caminho feliz", a função receberItemQuebrado, esperamos que receba ItemQuebrado e retorne ItemConsertado. Logo o teste terá o seguinte nome:

_receberItemQuebrado_RecebeItemQuebrado_RetornaItemConsertado

Em testes que averiguamos os codigos de status HTTP retornados, adicionamos o resultado ao ComportamentoDesejado.

Arquitetura de diretórios

Foi-se divido em 3 pastas principais

  • Slice, para slice tests.
  • Unit, para testes de unidade. Cada uma contém pastas replicando a estrutura de pastas do projeto, abrangendo somente as camadas que foram testadas.

About

Simple weather api with client side caching

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages