Esta aplicação é uma API RESTful desenvolvida em Java usando o framework Spring Boot. Ela implementa autenticação com JWT, gerenciamento de banco de dados com Hibernate e Flyway, e documentação interativa usando Swagger. A API está configurada para operar na porta 8082.
- Java 21 ou superior.
- Maven para gerenciamento de dependências.
- MySQL como banco de dados.
- Ferramenta de cliente HTTP (como Postman) para testes (opcional).
- Spring Boot: Framework para desenvolvimento rápido de aplicações Java.
- Hibernate: ORM para persistência de dados.
- Flyway: Gerenciamento de versionamento do banco de dados.
- JWT (JSON Web Token): Autenticação e autorização segura.
- Swagger: Documentação interativa e explorável da API.
-
Criação do Banco de Dados: Certifique-se de que o MySQL está rodando e crie um banco de dados para a aplicação.
CREATE DATABASE sirio_api;
-
Configuração do Banco de Dados: Configure as credenciais do banco no arquivo
application.yml
ouapplication.properties
.Exemplo de Configuração:
spring: datasource: url: jdbc:mysql://localhost:3306/sirio_api username: seu_usuario password: sua_senha driver-class-name: com.mysql.cj.jdbc.Driver jpa: hibernate: ddl-auto: update properties: hibernate: dialect: org.hibernate.dialect.MySQL8Dialect
-
Versionamento com Flyway: O Flyway executa automaticamente scripts de migração para criar e popular tabelas no banco. Um usuário padrão será cadastrado:
- Usuário JWT Default:
- CPF:
12345678901
- Este usuário pode ser usado para gerar tokens JWT.
- CPF:
- Usuário JWT Default:
-
Clone o repositório do projeto:
git clone [https://github.com/gonWell/api-spring.git](https://github.com/gonWell/api-spring.git) cd api-spring
-
Compile e instale as dependências:
mvn clean install
-
Execute a aplicação:
mvn spring-boot:run
-
A aplicação estará disponível em: http://localhost:8082.
A documentação interativa da API está disponível no Swagger. Acesse pelo navegador:
- URL Swagger: http://localhost:8082/swagger-ui/index.html
Utilize o endpoint de login para autenticação e obtenha o token:
- Endpoint:
POST /api/auth/login?cpf=12345678901
- O token será retornado no corpo da resposta.
Inclua o token no cabeçalho de todas as requisições autenticadas:
- Header:
Authorization: Bearer <seu_token>
-
Listar Todos os Usuários:
- Endpoint:
GET /api/usuarios
- Autenticação: Sim (Token JWT necessário).
- Endpoint:
-
Criar um Novo Usuário:
- Endpoint:
POST /api/usuarios
- Corpo da Requisição:
{ "nome": "João da Silva", "cpf": "98765432109", "dataNascimento": "1990-01-01" "endereco:... }
- Endpoint:
-
Explore outros endpoints diretamente no Swagger!
src/
├── main/
│ ├── java/
│ │ └── com.sirio.api/
│ │ ├── auth/ # Autenticação com JWT
│ │ ├── configs/ # Configurações (JWT, segurança, etc.)
│ │ ├── usuario/ # Recursos de usuários
│ │ └── Application.java # Classe principal
│ └── resources/
│ ├── db/migration/ # Scripts Flyway
│ ├── application.yml # Configurações da aplicação
│ └── static/ # Recursos estáticos (Swagger UI)
└── test/
└── java/
└── com.sirio.api/ # Testes da aplicação
- Autenticação JWT: Segurança em todos os endpoints protegidos.
- Banco de Dados MySQL: Gerenciado com Hibernate e Flyway.
- Documentação Swagger: Interface interativa para explorar a API.
- Migrações com Flyway: Automação do schema do banco de dados.
Desenvolvido por Wellington Barbosa. 🚀