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 git@github.com: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/documentation/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.