Address API

Circle CI Coverage Status

Estrutura do projeto

A aplicação foi elaborada utilzando padrão de arquitetura MVC (Model View Controller), sendo dividida da seguinte forma:

  • Model - Mapeamento de objetos do domínio (domain)
  • View - API REST (controllers)
  • Controller - Centralização da lógica de negócio (service)

Foi baseada na utilização do Framework Spring, utilizando os módulos:

  • Spring Boot
  • Fácil configuração da aplicação
  • Servidor web incorporado (Tomcat), facilitando a execução da aplicação
  • Gerenciamento da maioria das versões de dependências
  • Spring Framework
  • Injeção de dependências e Inverção de Controle (Padrões de desenvolvimento para baixo acoplamento de módulos da aplicação)
  • Geração da API REST
  • Gerenciamento de transações
  • Testes unitários
  • Spring Data JPA
  • Repositório de acesso a dados utilizando a especificação JPA

Testes

Foram desenvolvidos testes unitários para validação, testes e garantia de mudanças, prevenindo problemas e ajudando no desenvolvimento (tests)

Banco de dados

A aplicação pode ser executada utilizando 2 bancos de dados: HSQLDB e MySQL

Quando a aplicação é executada localmente utilizando Java (java -jar), ou na execução dos testes, o banco de dados utilizado é o HSQLDB

Caso a aplicação seja executada através do docker (descrito mais abaixo), o banco de dados utilizando é o MySQL

Compilação e execução

Ferramentas necessárias para compilação e execução:

###Empacotando o projeto: Na pasta do projeto executar:

  • mvn clean package

Será gerado o arquivo target/address-service.jar.

Executando o projeto:

  • java -jar target/address-service.jar

A API ficará disponível no endereço http://localhost:8080

Testando a API:

Para testes da API é possível acessar o endereço:

  • http://localhost:8080/swagger-ui.html

Docker (docker-compose)

Também é possível executar a aplicação utilizando docker-compose.

Neste formato de execuçãom a aplicação utiliza um banco de dados MySQL, através de um container docker.

Para ambientes de desenvolvimento é necessário a instalação das ferramentas:

###Empacotando o projeto: Na pasta do projeto executar:

  • mvn clean package

Executando o docker-compose:

  • docker-compose up

Após esse processos, a aplicação ficará disponível no pela url:

  • http://{IP_VM_DOCKER}:8080

* Para obter o ip da VM:

  • docker-machine ip dev

Documentação da API

A documentação da API REST desenvolvida foi disponibilizada utilizando o Swagger

Com a aplicação executando, podemos acessar o endereço:

  • Aplicação executada via Java: http://localhost:8080/swagger-ui.html
  • Aplicação executada via Docker: http://{IP_VM_DOCKER}:8080/swagger-ui.html