Skip to content

gtedesc0/springboot-api-crud

Ā 
Ā 

Repository files navigation

Tecnologias

Spring Boot API CRUD

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.



Sumario

Motivação

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.

O que foi feito e os próximos passos

  • JWT
  • Refresh token
  • users CRUD
  • test coverage report Jacoco report
  • tests JUnity
  • database migration Flyway
  • java based migrations
  • Soft delete
  • Auditoria
  • swagger
  • email templates

Requisitos

  • MariaDB: ^10.6.1
  • Java: ^16

recomendo a instalação do maven localmente, mas o projeto tem uma versão portatil nos arquivos mvnw e mvnw.cmd

Esse projeto foi configurado com Spring Initializr.

Entidades

database diagram

arquivo do draw.io

Instalação

Caso tiver o maven instalado localmente substitua mvnw por mvn (para usuƔrios do zsh adicione o comando bash 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

Rodando um teste especifico

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

Documentação do Swagger

Assim que a aplicação estiver de pé, fica disponível em: localhost:8080/api/v1/swagger-ui

Postman

Clique aqui para acessar o aquivo json da coleção do postman.




Database Migrations

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>

VariƔveis de ambiente

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=80

Todas opƧƵes do aplication.properties padrƵes no Spring Boot.

Todas funcionalidades do Spring Boot.

About

Spring Boot API RESTful com testes, swagger e JWT šŸš€

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 99.3%
  • Other 0.7%