Api de cadastro de Diretor com lista de filmes.
https://fox-films.herokuapp.com
Path Existente:
POST
/api/v1/director
A aplicação está na nuvem e swagger disponível no link abaixo...
https://fox-films.herokuapp.com/swagger-ui.html
Esta api foi cencebida usando spring boot, docker, mongoDb, MongoExpress, DevTools para agilizar o desenvolvimento e swagger ui para disponibilizar a documentação.
A aplicação que está na nuvem foi conectada em um banco noSql MLab.com (MongoDb)
Já a aplicação local é conectada em um mongoDb provido em imagem de docker, é utilizado um arquivo js para iniciar o banco com pelo menos uma informação de insert, toda vez que o container é removido, os dados sao perdidos.
Você precisa ter instalado em sua máquina:
Docker
Maven
JDK 1.8
Toda a aplicação está preparada para ser utilizada com o docker, replicando os comandos abaixo, você terá o mongoDb na porta 27017, o Mongo-Express no http://localhost:8081, a aplicação no http://localhost:8090 e a documentação no http://localhost:8090/swagger-ui.html
Os comandos a seguir devem ser feitos no diretório raiz da aplicação...
sudo mvn clean install
sudo cd target
sudo cp fox-films-0.0.1-SNAPSHOT.jar ../docker/docker-api/
O comando a seguir deve ser feito na pasta docker...
sudo docker-compose -f docker-compose.yml build
sudo docker-compose -f docker-compose.yml up
Após essa sequencia de comandos você consegue acessar o link abaixo utilizando a senha de admin para acessar o mongo-express e ter uma visualização completa da sua collection
http://localhost:8081
User: admin Password: 123456
Acessando o link abaixo você consegue visualizar a documentação da api e já fazer testes locais...
http://localhost:8090/swagger-ui.html
No modo Debug, os comandos acionaram o build e o preparo dos containers do Banco Mongo e do gerenciador Mongo Express, ficando a seu encargo executar a aplicação pelo eclipse, isso para fins de debug.
Os comandos a seguir devem ser feitos no diretório raiz da aplicação...
sudo mvn clean install
sudo cd target
sudo cp fox-films-0.0.1-SNAPSHOT.jar ../docker/docker-api/
O comando a seguir deve ser feito na pasta docker...
sudo docker-compose -f docker-compose-debug.yml build
sudo docker-compose -f docker-compose-debug.yml up
Após essa sequencia de comandos você consegue acessar o link abaixo utilizando a senha de admin para acessar o mongo-express e ter uma visualização completa da sua collection
http://localhost:8081
User: admin Password: 123456
Para executar os testes automatizados, basta usar o comando
mvn test
- O teste com selenium webDriver está incluso nessa massa de testes, no processo somos redirecionados ao site do google, onde é inserido a busca pelo nome do autor e filme que retiramos do mongo, na sequência é extraido a quantidade de resultados relativos ao assunto...
Obs: Aconselho para execução dos testes utilizar o windows, pois fiz voltado para esse S.O devido não saber a stack de escolha do avaliador.
Ou ainda quando no eclipse, clicando com o botão direito no package da aplicação > Run As> JUnit Test
O padrao de arquitetura para as classes dessa aplicacao segue:
*Repository - Interface que extende do MongoRepository
*Model - Classes utilizadas em testes
*Entity - Entidades que possuem anotações de validação e nome da collection onde será salva
*Resource - Classes responsavel pelas chamadas HTTP
*Service - Para uma melhor organização, essas classes são responsáveis por manusear/repassar as informações entre o controller e o repository
OBS:. Vale lembrar, que para esta aplicacao, nao foi incluido uma camada de BUSINESS onde fica contido as regras de negocio. Foi decidido assim, pois as chamadas eram simples e nao visavam regras complexas.
URL BASE: api/v1
Diretor Para cadastro de Diretor
Para cadastrar mais de um filme por vez, basta enviar um array com os filmes junto com o objeto diretor.
[POST] api/v1/director
{ "name": "Kevin Feige", "birthdayDate": "1991-10-40", "films": [ { "name": "Vingadores - Ultimato", "year": "2019" }, { "name": "Vingadores - Guerra infinita", "year": "2018" } ] }
- SpringBoot - SPRING
- Maven - Dependency Management
- Eclipse - The Eclipse Fundation
- Docker - Enterprise Container
- MongoDb - NoSql
Para versionar, estou usando o padrao SemVer
- Yohanes Lopes - Initial work - Yohanes26