Um cadastro de usuÔrios completo, com permissões de acesso, token JWT testes de integração e unitÔrios, no padrão API RESTful.
- Motivação
- Próximos passos
- Requisitos
- Entidades
- Instalação
- Rodando um teste especifico
- Documentação do Swagger
- Postman
- Database Migrations
- Variaveis de ambiente
A ideia desse repositório Ć© a criação de uma api em spring boot, com o mĆ”ximo possĆvel de boas praticas e o mais completa que eu conseguir, para servir como uma base para min no futuro, ou para outras pessoas que estiverem buscando um guia para a construção de uma api com Spring Boot. Qualquer pessoa que quiser contribuir ou usar esse projeto Ć© bem vinda.
- JWT
- Refresh token
- users CRUD
- test coverage report Jacoco report
- tests JUnity
- database migration Flyway
- java based migrations
- Soft delete
- Auditoria
- swagger
- email templates
- MariaDB:
^10.6.1
- Java:
^16
recomendo a instalação do maven localmente, mas o projeto tem uma versão portatil nos arquivos
mvnw
emvnw.cmd
Esse projeto foi configurado com Spring Initializr.
arquivo do draw.io
Caso tiver o maven instalado localmente substitua
mvnw
pormvn
(para usuƔrios do zsh adicione o comandobash
antes de mvnw)
# Clone o repositório e acesse o diretório.
$ git clone [email protected]:Throyer/springboot-api-crud.git && cd springboot-api-crud
# Baixe as dependencias (o parametro -DskipTests pula os testes)
$ mvnw install -DskipTests
# Rode a aplicação
$ mvnw spring-boot:run
# Para rodar os testes
$ mvnw test
# Para buildar para produção
$ mvnw clean package
# Para gerar o relatório de cobertura apos os testes (fica disponĆvel em: target/site/jacoco/index.html)
$ mvnw jacoco:report
use o parâmetro -Dtest=<Classe>#<metodo>
por exemplo o teste de integração de criação usuÔrio:
$ mvnw test -Dtest=UsuariosControllerIntegrationTests#should_save_a_new_user
Assim que a aplicação estiver de pĆ©, fica disponĆvel em: localhost:8080/api/v1/swagger-ui
Clique aqui para acessar o aquivo json
da coleção do postman.
existem dois scripts bash
que podem ser usados para criação de arquivos de migração
-
Java based migrations
./migration_create <migration-name> # or zsh users bash migration_create.sh <migration-name>
-
SQL based migrations
./sql_create <migration-name> # or zsh users bash sql_create.sh <migration-name>
Descrição | parâmetro | Valor padrão |
---|---|---|
contexto da aplicação | contexto |
api/ |
porta da aplicação | port |
8080 |
url do banco | db-url |
localhost:3306/common_app |
nome de usuƔrio (banco) | db-username |
root |
senha do usuƔrio (banco) | db-password |
root |
mostrar sql na saida | show-sql |
false |
valor do secret na geração dos tokens | token-secret |
secret |
tempo de expiração do token em horas | token-expiration-time-in-hours |
24 |
tempo de expiração do refresh token em dias | refresh-token-expiration-time-in-day |
7 |
mƔximo de conexƵes com o banco | max-connections |
5 |
endereƧo do servidor smtp | smtp-host |
smtp.gmail.com |
porta do servidor smtp | smtp-port |
587 |
nome de usuƔrio smtp | smtp-username |
user |
senha do servidor smtp | smtp-password |
secret |
são definidas em: application.properties
# para mudar o valor de alguma variÔvel de ambiente # na execução basta passar ela como parâmetro. (como --port=80 por exemplo). $ java -jar api-1.0.0.RELEASE.jar --port=80Todas opções do
aplication.properties
padrƵes no Spring Boot.