Book Management System é uma aplicação Web, robusta e eficiente, para o gerenciamento completo de livros. Consiste em uma API REST feita com Java e Spring, e uma interface com HTML, CSS e Javascript. Construído com boas práticas de programação, inclui: autenticação segura com Spring Security e JWT; operações CRUD; testes unitários com JUnit e Mockito; logging com log4j2 para rastrear eventos e diagnosticar problemas; tratamento de erros e exceções; documentação interativa com Swagger.
- Autenticação e Autorização
- Busca de todos os livros disponíveis
- Pesquisa por ID, título ou autor
- Cadastro de novos livros
- Edição de informações de livros
- Exclusão de livros
Vídeo demonstração: https://youtu.be/Ghs7_J_VMt0?si=IdRPn4Lrdd-BNu11
Tela Buscar por Título ou Autor
POST /auth/login
Este endpoint realiza a autenticação de um usuário.
Nome | Tipo | Descrição |
---|---|---|
login |
String |
Obrigatório. Nome de usuário (login). |
password |
String |
Obrigatório. Senha do usuário. |
Código | Descrição | Corpo |
---|---|---|
200 | Login realizado com sucesso. | json { "token": "token_gerado" } |
401 | Credenciais inválidas. | - |
500 | Erro ao logar. | - |
POST /auth/register
Este endpoint registra um novo usuário.
Nome | Tipo | Descrição |
---|---|---|
login |
String |
Obrigatório. Nome de usuário (login). |
password |
String |
Obrigatório. Senha do usuário. |
role |
String |
Opcional. Papel ou função do usuário. |
Código | Descrição | Corpo |
---|---|---|
200 | Registro realizado com sucesso. | - |
400 | Usuário já existente. | - |
500 | Erro ao cadastrar-se. | - |
GET /api/books
Este endpoint retorna todos os livros disponíveis.
Código | Descrição | Corpo |
---|---|---|
200 | Busca realizada com sucesso. | json [{ "id": 1, "title": "Nome do Livro", "author": "Nome do Autor", "description": "Descrição", "price": 10.99 }] |
403 | Acesso não autorizado. | - |
404 | Nenhum livro encontrado. | - |
500 | Erro ao buscar livros. | - |
GET /api/books/{id}
Este endpoint retorna um livro específico com base no ID fornecido.
Nome | Tipo | Descrição |
---|---|---|
id |
Long |
Obrigatório. ID do livro desejado |
Código | Descrição | Corpo |
---|---|---|
200 | Busca realizada com sucesso. | json { "id": 1, "title": "Nome do Livro", "author": "Nome do Autor", "description": "Descrição", "price": 10.99 } |
403 | Acesso não autorizado. | - |
404 | Nenhum livro encontrado. | - |
500 | Erro ao buscar o livro. | - |
POST /api/books
Este endpoint cria um novo livro com base nos dados fornecidos.
Código | Descrição | Corpo |
---|---|---|
200 | Livro criado com sucesso. | json [{ "id": 1, "title": "Nome do Livro", "author": "Nome do Autor", "description": "Descrição", "price": 10.99 }] |
403 | Acesso não autorizado. | - |
500 | Erro ao criar o livro. | - |
PUT /api/books
Este endpoint edita um livro existente com base nos dados fornecidos.
Código | Descrição | Corpo |
---|---|---|
200 | Livro editado com sucesso. | json [{ "id": 1, "title": "Nome do Livro", "author": "Nome do Autor", "description": "Descrição", "price": 10.99 }] |
403 | Acesso não autorizado. | - |
404 | Nenhum livro encontrado. | - |
500 | Erro ao editar o livro. | - |
DELETE /api/books/{id}
Este endpoint deleta um livro específico com base no ID fornecido.
Nome | Tipo | Descrição |
---|---|---|
id |
Long |
Obrigatório. ID do livro a ser deletado |
Código | Descrição | Corpo |
---|---|---|
200 | Livro deletado com sucesso. | json [{ "id": 1, "title": "Nome do Livro", "author": "Nome do Autor", "description": "Descrição", "price": 10.99 }] |
404 | Nenhum livro encontrado. | - |
500 | Erro ao deletar o livro. | - |
GET /api/books/search
Este endpoint retorna livros com base no título ou autor fornecido.
Nome | Tipo | Descrição |
---|---|---|
titleOrAuthor |
String |
Obrigatório. Título ou autor a ser pesquisado. |
Código | Descrição | Corpo |
---|---|---|
200 | Busca realizada com sucesso. | json [{ "id": 1, "title": "Nome do Livro", "author": "Nome do Autor", "description": "Descrição", "price": 10.99 }] |
403 | Acesso não autorizado. | - |
404 | Nenhum livro encontrado. | - |
500 | Erro ao buscar livros. | - |
Back-end:
- Java
- Spring Boot
- JPA
- Hibernate
- Spring Security
- JWT
- JUnit
- Mockito
- Docker
Front-end:
- HTML5
- CSS3
- Javascript
Siga as etapas abaixo para configurar e executar o projeto Java com Spring localmente:
-
Certifique-se de ter o Java 17 JDK instalado. Caso não tenha, faça o download e a instalação a partir do site oficial do Java.
-
Clone o repositório do projeto:
git clone https://github.com/rogeriobgregorio/book-management-system.git
- Acesse o diretório do projeto:
cd book-management-system
- Execute o projeto:
./mvnw spring-boot:run
Se preferir, abra o projeto em uma IDE, como IntelliJ por exemplo, e execute o projeto.
Após concluir essas etapas, o seu servidor Spring estará em execução localmente na porta 8080.
A interface para consumir a API esta localizada na pasta "front-end".
-
Abra a página login.html no browser utilizando um servidor, como live server por exemplo.
-
Utilize o usuário adminLogin e a senha adminPassword para logar como administrador.
-
Documentação da API A documentação completa da API pode ser acessada localmente ao executar a aplicação e visitar http://localhost:8080/swagger-ui/index.html#. Esta interface interativa, gerada pelo Swagger, fornece detalhes sobre cada endpoint, parâmetros de solicitação, respostas esperadas e exemplos práticos de uso.
-
Spring Framework Consulte a documentação oficial do Spring Framework para obter informações detalhadas sobre o framework utilizado no backend. Esta referência abrange conceitos fundamentais, configurações avançadas e as melhores práticas recomendadas pela comunidade Spring.
-
Swagger Documentation O Swagger é integrado à API para facilitar a compreensão e interação. Obtenha mais informações sobre o Swagger em https://swagger.io/.