API RESTful desenvolvida em Java com Spring Boot para o projeto Macroscan. O objetivo principal é facilitar a geração de relatórios de macroscopia para médicos, automatizando o processo de preenchimento e gerando documentos em PDF. A arquitetura segue o padrão MVC.
- API RESTful Completa: Endpoints para gerenciar usuários, pacientes e relatórios (CRUD).
- Autenticação e Autorização: Segurança baseada em JWT (JSON Web Tokens) para proteger os endpoints.
- Geração de Relatórios: Capacidade de gerar relatórios médicos dinamicamente no formato PDF.
- Banco de Dados Embarcado: Utiliza H2 Database em modo arquivo para facilitar o ambiente de desenvolvimento, sem necessidade de configurar um banco de dados externo.
- Validação de Dados: Garante a integridade dos dados recebidos através do Spring Validation.
Este projeto backend serve como a API para uma aplicação frontend de interface simples, desenvolvida com HTML, CSS e JavaScript.
- Link para o repositório do Frontend: https://github.com/L-A-N-E/Site_frontend-JavaS4
Para rodar a aplicação frontend, você precisará do Visual Studio Code e da extensão Live Server.
-
Clone o repositório do frontend:
git clone https://github.com/L-A-N-E/Site_frontend-JavaS4.git
-
Abra a pasta do projeto no VS Code.
-
Inicie o Live Server: Clique com o botão direito no arquivo
index.htmle selecione a opção "Open with Live Server".
⚠️ Importante: Para que o frontend funcione corretamente e possa se comunicar com a API, o projeto backend (este repositório) deve estar em execução na porta8080.
- Java 11
- Spring Boot: Framework principal para a construção da aplicação.
- Spring Data JPA: Para persistência de dados.
- Spring Security: Para implementação da segurança com JWT.
- Maven: Gerenciador de dependências e build do projeto.
- H2 Database: Banco de dados relacional em memória/arquivo.
- Lombok: Para reduzir código boilerplate (getters, setters, construtores).
- iTextPDF: Biblioteca para a criação e manipulação de arquivos PDF.
- JSON Web Token (jjwt): Para a implementação da autenticação.
Antes de começar, garanta que você tenha as seguintes ferramentas instaladas em seu ambiente de desenvolvimento:
- Java Development Kit (JDK) - Versão 11 ou superior.
- Apache Maven - Para gerenciar as dependências e o build do projeto.
- Git - Para clonar o repositório.
- Plugin Lombok na sua IDE (Opcional, mas altamente recomendado): Se você usa IntelliJ, Eclipse ou VSCode, instalar o plugin do Lombok evitará erros de compilação na IDE.
Siga os passos abaixo para executar o projeto localmente.
-
Clone o repositório:
git clone https://github.com/L-A-N-E/Sprint4-JavaDDD.git
-
Navegue até o diretório do projeto:
cd Sprint4-JavaDDD -
Instale as dependências com o Maven: O comando
cleanremove compilações antigas e oinstallbaixa todas as dependências dopom.xml.mvn clean install
-
Execute a aplicação:
mvn spring-boot:run
A aplicação será iniciada e estará disponível em
http://localhost:8080.
A aplicação utiliza um banco de dados H2 que salva os dados em um arquivo local na pasta ./data/relatoriosdb.
Você pode acessar o console web do H2 para visualizar e gerenciar os dados diretamente pelo navegador:
- URL:
http://localhost:8080/h2-console - JDBC URL:
jdbc:h2:file:./data/relatoriosdb(copie e cole este valor no campo "JDBC URL") - User Name:
sa - Password: (deixe em branco)
A API possui endpoints para autenticação e gerenciamento de recursos.
POST /auth/login- Para autenticar um usuário e receber um token JWT.POST /auth/register- Para registrar um novo usuário./api/relatorios- Endpoints para gerenciar os relatórios (requer autenticação).- (Adicione aqui outros endpoints importantes)
Dica: Utilize uma ferramenta como Postman ou Insomnia para testar os endpoints da API.
Para rodar a suíte de testes automatizados e garantir que tudo está funcionando como esperado, execute o seguinte comando:
mvn testO segredo e o tempo de expiração do token JWT estão configurados no arquivo src/main/resources/application.properties.
# JWT
jwt.secret=404E635266556A586E3272357538782F413F4428472B4B6250645367566B5970
jwt.expiration=86400000Atenção: Para um ambiente de produção, é altamente recomendável não deixar o segredo JWT diretamente no código. Utilize variáveis de ambiente ou um serviço de gerenciamento de segredos.