rl1m4 / springboot-api-crud

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

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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.



Live demo on heroku

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

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/documentation/swagger-ui/#/

exemplo no heroku

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 šŸš€

License:GNU General Public License v3.0


Languages

Language:Java 99.4%Language:Shell 0.5%Language:HTML 0.1%