REST API desenvolvida com Spring Boot para gerenciamento de livros. Este projeto faz parte de uma série de 10 CRUDs progressivos com o objetivo de solidificar conhecimentos no desenvolvimento backend com o ecossistema Spring.
- Java 25
- Spring Boot 4.0.6
- Spring Data JPA
- Spring Web MVC
- H2 Database (banco em memória)
- Maven
src/main/java/com/github/robertdiasmelo/bestsbooks/
├── BestsBooksApplication.java
├── controller/
│ └── BestsBooksController.java
├── service/
│ └── BestsBooksService.java
├── repository/
│ └── BestsBooksRepository.java
└── model/
└── BestsBooks.java
- Java 25
- Maven 3.9+
# Clone o repositório
git clone https://github.com/robertdiasmelo/bestsbooks.git
# Acesse a pasta do projeto
cd bestsbooks
# Execute com Maven
./mvnw spring-boot:runA aplicação estará disponível em http://localhost:8080.
| Método | Rota | Descrição |
|---|---|---|
| GET | /books |
Lista todos os livros |
| GET | /books/{id} |
Busca um livro pelo ID |
| POST | /books |
Cadastra um novo livro |
| PUT | /books/{id} |
Atualiza um livro existente |
| DELETE | /books/{id} |
Remove um livro |
POST http://localhost:8080/books
Content-Type: application/json
{
"title": "Clean Code",
"author": "Robert Martin",
"isbn": "9780132350884",
"publicationYear": 2008
}Resposta: 201 Created
{
"id": 1,
"title": "Clean Code",
"author": "Robert Martin",
"isbn": "9780132350884",
"publicationYear": 2008
}GET http://localhost:8080/booksResposta: 200 OK
[
{
"id": 1,
"title": "Clean Code",
"author": "Robert Martin",
"isbn": "9780132350884",
"publicationYear": 2008
}
]GET http://localhost:8080/books/1Resposta: 200 OK
{
"id": 1,
"title": "Clean Code",
"author": "Robert Martin",
"isbn": "9780132350884",
"publicationYear": 2008
}PUT http://localhost:8080/books/1
Content-Type: application/json
{
"title": "Clean Code - Updated",
"author": "Robert Martin",
"isbn": "9780132350884",
"publicationYear": 2008
}Resposta: 200 OK
DELETE http://localhost:8080/books/1Resposta: 204 No Content
A aplicação segue o padrão de camadas do Spring:
HTTP Request
│
▼
Controller ← recebe e responde requisições HTTP
│
▼
Service ← contém as regras de negócio
│
▼
Repository ← acesso ao banco de dados via Spring Data JPA
│
▼
Database ← H2 em memória
Este projeto é o primeiro de uma série progressiva onde cada CRUD introduz novos conceitos:
| # | Projeto | Conceito introduzido |
|---|---|---|
| 1 | BestsBooks | Estrutura base: Entity, Repository, Service, Controller |
| 2 | Produtos + Categoria | Relacionamento OneToMany, DTOs |
| 3 | Alunos | Bean Validation, GlobalExceptionHandler |
| 4 | Funcionários | Enums, JPQL, queries customizadas |
| 5 | Clientes + Endereço | @Embeddable, composição de entidades |
| 6 | Pedidos | ManyToMany, entidade de junção |
| 7 | Usuários | BCrypt, Spring Security |
| 8 | Tarefas | Paginação, ordenação, filtros |
| 9 | Produtos com imagem | Upload de arquivos |
| 10 | Agendamentos | @Scheduled, eventos de domínio |
Robert Dias Melo github.com/robertdiasmelo