Este projeto foi feito baseado nas aulas da Digital Innovation One e pode ser encontrado aqui, porém fiz algumas modificações e o meu está um pouco diferente do que foi feito em aula.
Objetivo do projeto: aprender/conhecer a API reativa com Spring Boot.
Nesta sessão vamos desenvolver uma API de gerenciamento de heróis utilizando Spring WebFlux, utilizada por empresas como Netflix e Pivotal, junto com a library reativa Reactor que atualmente é mantida pela VmWare. Além disso, usaremos o banco DynamoDb localmente para armazenar nossos dados e demonstrarei como realizar testes unitários da sua API com Junit e como gerar documentações simples por meio do Postman e também do Swagger.
Obs.: Não utilizei o DynamoDB da AWS por ser um serviço pago. Então utilizei outro banco NoSQL, o MongoDB.
Stack utilizada no projeto:
DESCRIÇÃO Nesta sessão vamos desenvolver uma API de gerenciamento de heróis utilizando Spring WebFlux, utilizada por empresas como Netflix e Pivotal, junto com a library reativa Reactor que atualmente é mantida pela VmWare. Além disso, usaremos o banco DynamoDb localmente para armazenar nossos dados e demonstrarei como realizar testes unitários da sua API com Junit e como gerar documentações simples por meio do Postman e também do Swagger.
A aplicação possui:
- Tela de Login;
- Tela de Cadastro;
- Tela de lista de quadrinhos com infinite loading;
- Tela de descrição do quadrinho, onde apresenta informações mais detalhadas sobre o mesmo, e que o usuário poderá adiciona-lo ao carrinho;
- Tela de Carrinho, onde é apresentado a lista de produtos do Cart;
- Tela de pagamento simulando uso de cartão de crédito;
- Tela de heróis;
- Tela de descrição do herói;
- Tela de perfil;
- Tela de mudança de senha;
- Tela de pedidos, onde é apresentado o histórico de compras;
- Tela de detalhe do pedido;
- Tela de sobre.
Os dados dos quadrinhos são recuperados da API: https://developer.marvel.co
Para executar o projeto no terminal, digite o seguinte comando:
$ mvn spring-boot:run
Após executar o comando acima, o seguinte endereço da API estará disponível:
http://localhost:8080/heroes
Para executar os testes desenvolvidos, execute o seguinte comando:
$ mvn clean test
Para visualizar os endpoints da API, usamos o Swagger UI, no endereço:
http://localhost:8080/swagger-ui-heroes-reactive-api.html
![](images/swagger-ui-endpoints.png)
Para utilizar a API você deve ter o MongoDB instalado em sua máquina. Você pode fazer o download aqui, no qual utilizei o "MongoDB Community Server" do package "server".
Na documentação há tutoriais de instalação de acordo com seu sistema operacional, confira aqui.
Utilizei o Ubuntu 20.04.2 LTS e a seguir há alguns comandos para utilizar o MongoDB:
- Startando o mongodb
$ sudo systemctl start mongod
- Verificando se iniciou:
$ sudo systemctl status mongod
- Parando o mongodb
$ sudo systemctl stop mongod
- Reiniciar o mongodb
$ sudo systemctl restart mongod