A API de Gestão de Biblioteca é uma aplicação backend para gerenciamento completo de livros, autores, categorias, usuários e empréstimos. Ela fornece endpoints RESTful para operações de criação, leitura, atualização e exclusão (CRUD), permitindo um controle eficiente do acervo e dos empréstimos de uma biblioteca.
- Cadastro de Autores: Inclui nome, sobrenome e biografia.
- Cadastro de Categorias: Define categorias de livros, como Ficção Científica, Fantasia, etc.
- Cadastro de Livros: Inserção de livros vinculados a autores e categorias.
- Cadastro de Usuários: Gestão de usuários que podem fazer empréstimos.
- Empréstimos de Livros: Registrar, consultar e gerenciar empréstimos de livros.
- consulta de Livros: Buscar livros por título, autor, categoria ou disponibilidade, com filtros opcionais.
- Consulta de Autores, Categorias e Usuários: Buscar registros por nome, sobrenome ou email.
- Operações RESTful completas: Endpoints bem estruturados que seguem boas práticas de desenvolvimento de APIs REST.
A API está disponível na seguinte URL:
https://library-spring-api.onrender.com
- Java 21
- Spring Boot & Jakarta EE
- Spring Data JPA
- Banco de Dados Relacional (PostgreSQL)
- Docker (opcional para containerização)
- Render (opcional para deployment)
-
Clone o repositório:
git clone https://github.com/JovemKA/library-spring-api cd library-spring-api -
Configure o banco de dados no arquivo application.properties (ou application.yml) com suas credenciais PostgreSQL:
spring.datasource.url=jdbc:postgresql://localhost:5432/seu_banco spring.datasource.username=seu_usuario spring.datasource.password=sua_senha spring.jpa.hibernate.ddl-auto=update
-
Compile e execute a aplicação:
mvn spring-boot:run
-
Acesse a API em
http://localhost:8080
| Método | Endpoint | Descrição |
|---|---|---|
| GET | /livros |
Lista todos os livros |
| GET | /livros/{id} |
Detalha um livro pelo ID |
| POST | /livros |
Cadastra um novo livro |
| PUT | /livros/{id} |
Atualiza informações de um livro |
| DELETE | /livros/{id} |
Remove um livro |
| Método | Endpoint | Descrição |
|---|---|---|
| GET | /autores |
Lista todos os autores |
| GET | /autores/{id} |
Detalha um autor pelo ID |
| POST | /autores |
Cadastra um novo autor |
| PUT | /autores/{id} |
Atualiza um autor |
| DELETE | /autores/{id} |
Remove um autor |
| Método | Endpoint | Descrição |
|---|---|---|
| GET | /usuarios |
Lista todos os usuários |
| GET | /usuarios/{id} |
Informa dados de um usuário |
| POST | /usuarios |
Cadastra novo usuário |
| PUT | /usuarios/{id} |
Atualiza um usuário |
| DELETE | /usuarios/{id} |
Remove um usuário |
| Método | Endpoint | Descrição |
|---|---|---|
| GET | /categorias |
Lista todas as categorias |
| GET | /categorias/{id} |
Detalha uma categoria |
| POST | /categorias |
Cadastra uma nova categoria |
| PUT | /categorias/{id} |
Atualiza uma categoria |
| DELETE | /categorias/{id} |
Remove uma categoria |
| Método | Endpoint | Descrição |
|---|---|---|
| GET | /emprestimos |
Lista todos os empréstimos |
| GET | /emprestimos/{id} |
Detalha um empréstimo |
| POST | /emprestimos |
Realiza novo empréstimo |
| PUT | /emprestimos/{id} |
Registra devolução |
| DELETE | /emprestimos/{id} |
Remove um empréstimo |
Requisição:
GET /livrosResposta:
[
{
"id": 7,
"titulo": "Fundação",
"anoPublicacao": 1951,
"disponivel": true,
"categoria": {
"id": 4,
"nome": "Ficção Científica",
"descricao": "Livros que exploram conceitos de tecnologia, espaço e futuro."
},
"autor": {
"id": 1,
"nome": "Isaac Asimov",
"sobrenome": "Asimov",
"biografia": "Físico, escritor de ficção científica, conhecido por 'Fundação'."
}
},
{
"id": 8,
"titulo": "Eu, Robô",
"anoPublicacao": 1950,
"disponivel": true,
"categoria": {
"id": 5,
"nome": "Fantasia",
"descricao": "Livros com elementos mágicos e mundos imaginários."
},
"autor": {
"id": 1,
"nome": "Isaac Asimov",
"sobrenome": "Asimov",
"biografia": "Físico, escritor de ficção científica, conhecido por 'Fundação'."
}
},
{
"id": 9,
"titulo": "2001: Uma Odisseia no Espaço",
"anoPublicacao": 1968,
"disponivel": true,
"categoria": {
"id": 4,
"nome": "Ficção Científica",
"descricao": "Livros que exploram conceitos de tecnologia, espaço e futuro."
},
"autor": {
"id": 2,
"nome": "Arthur C.",
"sobrenome": "Clark",
"biografia": "Autor de ficção científica, criador de histórias futurísticas."
}
}
]Requisição:
GET /livros/7Resposta:
{
"id": 7,
"titulo": "Fundação",
"anoPublicacao": 1951,
"disponivel": true,
"categoria": {
"id": 4,
"nome": "Ficção Científica",
"descricao": "Livros que exploram conceitos de tecnologia, espaço e futuro."
},
"autor": {
"id": 1,
"nome": "Isaac Asimov",
"sobrenome": "Asimov",
"biografia": "Físico, escritor de ficção científica, conhecido por 'Fundação'."
}
}Requisição:
POST /livrosCorpo da requisição:
{
"titulo": "O Fim da Eternidade",
"anoPublicacao": 1955,
"disponivel": true,
"categoria": { "id": 4 },
"autor": { "id": 1 }
}Resposta:
{
"id": 10,
"titulo": "O Fim da Eternidade",
"anoPublicacao": 1955,
"disponivel": true,
"categoria": {
"id": 4,
"nome": "Ficção Científica",
"descricao": "Livros que exploram conceitos de tecnologia, espaço e futuro."
},
"autor": {
"id": 1,
"nome": "Isaac Asimov",
"sobrenome": "Asimov",
"biografia": "Físico, escritor de ficção científica, conhecido por 'Fundação'."
}
}Requisição:
PUT /livros/7Corpo da requisição:
{
"titulo": "Fundação (2ª Edição)",
"anoPublicacao": 1951,
"disponivel": false,
"categoria": { "id": 4 },
"autor": { "id": 1 }
}Resposta:
{
"id": 7,
"titulo": "Fundação (2ª Edição)",
"anoPublicacao": 1951,
"disponivel": false,
"categoria": {
"id": 4,
"nome": "Ficção Científica",
"descricao": "Livros que exploram conceitos de tecnologia, espaço e futuro."
},
"autor": {
"id": 1,
"nome": "Isaac Asimov",
"sobrenome": "Asimov",
"biografia": "Físico, escritor de ficção científica, conhecido por 'Fundação'."
}
}Requisição:
DELETE /livros/7Resposta:
{
"message": "Livro removido com sucesso."
}Requisição:
GET /autoresResposta:
[
{
"id": 1,
"nome": "Isaac",
"sobrenome": "Asimov",
"biografia": "Físico, escritor de ficção científica, conhecido por 'Fundação'."
},
{
"id": 2,
"nome": "Arthur C.",
"sobrenome": "Clark",
"biografia": "Autor de ficção científica, criador de histórias futurísticas."
}
]Requisição:
GET /autores/1Resposta:
{
"id": 1,
"nome": "Isaac",
"sobrenome": "Asimov",
"biografia": "Físico, escritor de ficção científica, conhecido por 'Fundação'."
}Requisição:
POST /autoresCorpo da requisição:
{
"nome": "J.R.R.",
"sobrenome": "Tolkien",
"biografia": "Filólogo, escritor de fantasia, autor de O Senhor dos Anéis."
}Resposta:
{
"id": 3,
"nome": "J.R.R.",
"sobrenome": "Tolkien",
"biografia": "Filólogo, escritor de fantasia, autor de O Senhor dos Anéis."
}Requisição:
PUT /autores/3Corpo da requisição:
{
"nome": "John Ronald Reuel",
"sobrenome": "Tolkien",
"biografia": "Autor clássico da literatura fantástica, criador da Terra-média."
}Resposta:
{
"id": 3,
"nome": "John Ronald Reuel",
"sobrenome": "Tolkien",
"biografia": "Autor clássico da literatura fantástica, criador da Terra-média."
}Requisição:
DELETE /autores/3Resposta:
{
"message": "Autor removido com sucesso."
}Requisição:
GET /usuariosResposta:
[
{
"id": 1,
"nome": "Maria Oliveira",
"email": "maria.oliveira@email.com"
},
{
"id": 2,
"nome": "Carlos Souza",
"email": "carlos.souza@email.com"
}
]Requisição:
GET /usuarios/1Resposta:
{
"id": 1,
"nome": "Maria Oliveira",
"email": "maria.oliveira@email.com"
}Requisição:
POST /usuariosCorpo da requisição:
{
"nome": "Ana Lima",
"email": "ana.lima@email.com",
"senha": "senha123"
}Resposta:
{
"id": 3,
"nome": "Ana Lima",
"email": "ana.lima@email.com"
}Requisição:
PUT /usuarios/3Corpo da requisição:
{
"nome": "Ana Lívia Lima",
"email": "ana.livia@email.com",
"senha": "novasenha456"
}Resposta:
{
"id": 3,
"nome": "Ana Lívia Lima",
"email": "ana.livia@email.com"
}Requisição:
DELETE /usuarios/3Resposta:
{
"message": "Usuário removido com sucesso."
}Requisição:
GET /categoriasResposta:
[
{
"id": 4,
"nome": "Ficção Científica",
"descricao": "Livros que exploram conceitos de tecnologia, espaço e futuro."
},
{
"id": 5,
"nome": "Fantasia",
"descricao": "Livros com elementos mágicos e mundos imaginários."
}
]Requisição:
GET /categorias/4Resposta:
{
"id": 4,
"nome": "Ficção Científica",
"descricao": "Livros que exploram conceitos de tecnologia, espaço e futuro."
}Requisição:
POST /categoriasCorpo da requisição:
{
"nome": "Romance",
"descricao": "Narrativas que focam no desenvolvimento de relações humanas."
}Resposta:
{
"id": 6,
"nome": "Romance",
"descricao": "Narrativas que focam no desenvolvimento de relações humanas."
}Requisição:
PUT /categorias/4Corpo da requisição:
{
"nome": "Ficção Científica Moderna",
"descricao": "Livros sobre novas tendências e avanços tecnológicos."
}Resposta:
{
"id": 4,
"nome": "Ficção Científica Moderna",
"descricao": "Livros sobre novas tendências e avanços tecnológicos."
}Requisição:
DELETE /categorias/6Resposta:
{
"message": "Categoria removida com sucesso."
}Requisição:
GET /emprestimosResposta:
[
{
"id": 4,
"dataDevolucao": "2025-05-16",
"dataEmprestimo": "2025-05-02",
"tituloLivro": "Fundação"
},
{
"id": 5,
"dataDevolucao": "2025-05-17",
"dataEmprestimo": "2025-05-03",
"tituloLivro": "Eu, Robô"
},
{
"id": 6,
"dataDevolucao": "2025-05-18",
"dataEmprestimo": "2025-05-04",
"tituloLivro": "2001: Uma Odisseia no Espaço"
}
]Requisição:
GET /emprestimos/4Resposta:
{
"id": 4,
"dataDevolucao": "2025-05-16",
"dataEmprestimo": "2025-05-02",
"tituloLivro": "Fundação"
}Requisição:
POST /emprestimosCorpo da requisição:
{
"dataEmprestimo": "2025-05-10",
"dataDevolucao": "2025-05-24",
"livro": { "id": 9 },
"usuario": { "id": 3 }
}Resposta:
{
"id": 7,
"dataDevolucao": "2025-05-24",
"dataEmprestimo": "2025-05-10",
"tituloLivro": "2001: Uma Odisseia no Espaço"
}Requisição:
PUT /emprestimos/7Corpo da requisição:
{
"dataEmprestimo": "2025-05-10",
"dataDevolucao": "2025-05-28",
"livro": { "id": 9 },
"usuario": { "id": 3 }
}Resposta:
{
"id": 7,
"dataDevolucao": "2025-05-28",
"dataEmprestimo": "2025-05-10",
"tituloLivro": "2001: Uma Odisseia no Espaço"
}Requisição:
DELETE /emprestimos/7Resposta:
{
"message": "Empréstimo removido com sucesso."
}