Loading repository data…
Loading repository data…
sousaarthur / repository
O BookManager é uma API REST desenvolvida em Spring Boot para gerenciar livros e suas categorias. O sistema permite o cadastro, listagem, atualização e exclusão de livros, além da organização por categorias.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
O BookManager é uma API REST desenvolvida em Spring Boot para gerenciar livros e suas categorias. O sistema permite o cadastro, listagem, atualização e exclusão de livros, além da organização por categorias.
Foi construída com boas práticas de arquitetura em camadas (Controller, Service, Repository e DTOs), além de migrações automáticas com Flyway para controle do banco de dados PostgreSQL.
BookManager/
├── src/
│ ├── main/
│ │ ├── java/com/sousaarthur/BookManager/
│ │ │ ├── controller/
│ │ │ │ ├── BookController.java
│ │ │ │ └── CategoriesController.java
│ │ │ ├── dto/
│ │ │ │ ├── BookDTO.java
│ │ │ │ ├── CategoryDTO.java
│ │ │ │ ├── ListBooksDTO.java
│ │ │ │ └── UpdateBookDTO.java
│ │ │ ├── entity/
│ │ │ │ ├── Book.java
│ │ │ │ └── Category.java
│ │ │ ├── repository/
│ │ │ │ ├── BookRepository.java
│ │ │ │ └── CategoryRepository.java
│ │ │ └── Application.java
│ │ └── resources/
│ │ ├── application.yml
│ │ └── db/migration/
│ │ ├── V1__create-table-categories.sql
│ │ ├── V2__create-table-books.sql
│ │ └── V3__alter-table-books.sql
├── pom.xml
└── README.md
git clone https://github.com/seu-usuario/BookManager.git
cd BookManager
spring:
datasource:
url: jdbc:postgresql://localhost:5432/bookmanager
username: seu_usuario
password: sua_senha
jpa:
hibernate:
ddl-auto: validate
flyway:
enabled: true
./mvnw spring-boot:run
A API será iniciada em: 👉 http://localhost:8080
/booksRetorna a lista de todos os livros cadastrados.
Exemplo de resposta:
{
"content": [
{
"id": 4,
"title": "Harry Potter e a Pedra Filosofal: 1",
"description": "Isso é uma descrição",
"author": "J.K. Rowling ",
"link": "https://sitedolivro.com",
"urlImage": "https://image/exemplo.jpg",
"createdAt": "2025-10-08T09:58:18.525399",
"category": {
"id": 4,
"name": "Fantasia"
},
"actived": true
},
{
"id": 5,
"title": "O Pequeno Príncipe",
"description": "Isso é uma descrição",
"author": "Antoine de Saint-Exupéry",
"link": "https://sitedolivro.com",
"urlImage": "https://image/exemplo.jpg",
"createdAt": "2025-10-08T09:58:18.525399",
"category": {
"id": 12,
"name": "Infantil"
},
"actived": true
}
],
}
/books/registerCadastra um novo livro.
Exemplo de requisição:
{
"title": "Nome do livro",
"description": "Descrição do livro",
"author": "Autor",
"link": "link do site",
"urlImage": "url da capa",
"categoryId": 0, //1 a 25
}
Exemplo de resposta:
{
"id": 0,
"title": "string",
"description": "string",
"author": "string",
"link": "string",
"urlImage": "string",
"actived": true,
"category": {
"id": 0,
"name": "string"
},
"createdAt": "2025-10-09T21:40:01.645Z"
}
/books/update/Atualiza os dados de um livro.
Exemplo de requisição:
{
"id": 0,
"title": "string",
"description": "string",
"author": "string",
"link": "string",
"urlImage": "string",
"category": {
"id": 0,
"name": "string"
},
}
Exemplo de resposta:
{
"id": 0,
"title": "string",
"description": "string",
"author": "string",
"link": "string",
"urlImage": "string",
"actived": true,
"category": {
"id": 0,
"name": "string"
},
"createdAt": "2025-10-09T21:40:01.645Z"
}
/books/view/{id}Retorna um livro especifico pelo id.
Exemplo de resposta:
{
"id": 0,
"title": "string",
"description": "string",
"author": "string",
"link": "string",
"urlImage": "string",
"actived": true,
"category": {
"id": 0,
"name": "string"
},
"createdAt": "2025-10-09T21:40:01.645Z"
}
/books/delete/{id}Remove um livro do sistema.
Resposta: 204 No Content
/categoriesRetorna a lista de todas as categorias do banco de dados.
Exemplo de resposta:
"content": [
{
"id": 1,
"name": "Tecnologia"
},
{
"id": 2,
"name": "Programação"
},
{
"id": 3,
"name": "Ficção"
},
{
"id": 4,
"name": "Fantasia"
},
{
"id": 5,
"name": "Terror"
},
{
"id": 6,
"name": "Romance"
},
{
"id": 7,
"name": "Mistério"
},
{
"id": 8,
"name": "Suspense"
}
]
O controle das tabelas é feito automaticamente via Flyway, localizado em
src/main/resources/db/migration.
Scripts de migração:
V1__create-table-categories.sql
V2__create-table-books.sql
V3__alter-table-books.sql