Esta é uma API RESTful robusta desenvolvida com Spring Boot para gerenciamento de registros de pessoas, usuários, livros e funcionalidades avançadas como envio de emails, geração de PDFs e suporte a múltiplos formatos de resposta (JSON, XML, YAML). O projeto demonstra conceitos chave de desenvolvimento backend, incluindo persistência de dados com JPA, migrações de banco com Flyway, autenticação segura com JWT, e versionamento de API via DTOs para compatibilidade.
É um protótipo escalável e completo, ideal para aprendizado e expansão em aplicações Spring Boot. Tecnologias principais: Java 21, Spring Boot 3, Spring Security com JWT, Spring Data JPA, Hibernate, Flyway, JUnit 5, Mockito, REST Assured, TestContainers, Docker, GitHub Actions, Swagger para documentação, e integrações para email (Spring Mail), PDF (iText ou similar), e content negotiation (Jackson).
- Operações CRUD Completas: Criação, leitura, atualização e exclusão para entidades como Pessoas, Usuários e Livros.
- Autenticação e Segurança: Proteção de endpoints com JWT, configurando CORS, e suporte a roles/permissions.
- Versionamento de API: DTOs versionados (ex: v1 e v2) para evoluir a API sem quebrar clientes existentes.
- Persistência de Dados: Integração com JPA/Hibernate e migrações automáticas via Flyway.
- Suporte a Banco de Dados: Configurado para MySQL, com suporte a relacionais e não relacionais (ex: PostgreSQL via Docker).
- Envio de Emails: Funcionalidade para notificação por email em eventos como cadastro ou atualizações.
- Geração de PDFs: Exportação de relatórios ou dados em formato PDF (ex: comprovantes ou listas).
- Content Negotiation: Respostas em múltiplos formatos: JSON, XML ou YAML, baseado no header Accept.
- Cadastro de Usuários e Livros: Endpoints dedicados para gerenciamento de usuários e biblioteca de livros.
- Tratamento de Exceções Avançado: Respostas personalizadas para erros, melhorando a usabilidade.
- Testes Abrangentes: Mais de 80 testes unitários e de integração, com cobertura estimada em 60%.
- Conteinerização e CI/CD: Suporte a Docker e deploy contínuo via GitHub Actions.
- JDK 21 ou superior
- Maven 3.6 ou superior
- MySQL 5.7 ou superior (crie um banco chamado
HighLoadApi) - Docker (opcional para conteinerização)
-
Clone o repositório:
git clone https://github.com/JhonSantt4na/HighLoadAPI.git cd HighLoadAPI -
Configure o banco de dados em
src/main/resources/application.properties:spring.datasource.url=jdbc:mysql://localhost:3306/HighLoadAPI?useSSL=false&serverTimezone=UTC spring.datasource.username=seu_usuario spring.datasource.password=sua_senha # Configurações de email (exemplo) spring.mail.host=smtp.gmail.com spring.mail.port=587 spring.mail.username=seu_email@gmail.com spring.mail.password=sua_senha_app -
Execute migrações e build:
mvn clean install -
Inicie a aplicação:
mvn spring-boot:runA API estará disponível em
http://localhost:8080.
- Construa a imagem:
docker build -t santt4na-rest . - Execute:
docker run -p 8080:8080 -e SPRING_DATASOURCE_URL=jdbc:mysql://host.docker.internal:3306/santt4na_rest santt4na-rest
A API possui mais de 20 endpoints, distribuídos em controladores para Pessoas, Usuários, Livros, Autenticação e Utilitários:
Notas sobre Endpoints:
- Total: Mais de 20, incluindo variações para versionamento, autenticação e integrações.
- Autenticação: Obrigatória em endpoints protegidos via JWT (Header: Authorization Bearer ).
- Content Negotiation: Use headers como
Accept: application/json,application/xmlouapplication/yaml. - Exemplos de Uso: Teste com Postman ou curl:
curl -X POST http://localhost:8080/auth/login -H "Content-Type: application/json" -d '{"username": "user", "password": "pass"}'
📚A documentação completa da API está disponível no Swagger UI:: ➡️ http://localhost:8080/swagger-ui/index.html
- Suíte de Testes: Mais de 80 testes unitários e de integração cobrindo controladores, serviços, repositórios e integrações (ex: TestContainers para banco de dados).
- Cobertura: Estimada em 60% para os principais pacotes da aplicação (use JaCoCo para relatórios:
mvn test jacoco:report). - Frameworks: JUnit 5, Mockito, REST Assured, TestContainers.
- Execute Testes:
mvn test
- Fork o repositório e crie uma branch para sua feature/fix.
- Siga estilos de código Java padrão.
- Adicione testes para novas funcionalidades (mantenha >85% coverage).
- Envie Pull Request com descrição clara.
- Issues: Relate bugs ou sugestões via GitHub Issues.
Criado Por Jorge Santana (Santt4na) By Intellij IDEA - Este projeto está licenciado sob a MIT License.





