Skip to content

Mgrsantos/minha-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 Minha API REST — Spring Boot

Java Spring Boot PostgreSQL Docker JWT Swagger

API RESTful completa com autenticação JWT, Docker e boas práticas de mercado.

📖 Documentação🚀 Como rodar📋 Endpoints🧪 Testes


✨ Sobre o projeto

API desenvolvida do zero com Spring Boot 3 e Java 17, seguindo arquitetura em camadas e boas práticas do mercado. O projeto cobre desde um CRUD completo até autenticação JWT, containerização com Docker e testes automatizados.


🛠️ Tecnologias

Camada Tecnologia
Linguagem Java 17
Framework Spring Boot 3
Segurança Spring Security + JWT (jjwt 0.11.5)
Banco de dados PostgreSQL 15
ORM Spring Data JPA / Hibernate
Validação Bean Validation (Jakarta)
Documentação SpringDoc OpenAPI 3 (Swagger UI)
Testes JUnit 5 + Mockito
Container Docker + Docker Compose

⚙️ Funcionalidades

  • ✅ CRUD completo de Produtos
  • ✅ Cadastro e autenticação de usuários
  • ✅ Tokens JWT com expiração de 24h
  • ✅ Senhas criptografadas com BCrypt
  • ✅ Proteção de endpoints por autenticação
  • ✅ Validação de dados com mensagens customizadas
  • ✅ Tratamento global de erros (Exception Handler)
  • ✅ Documentação interativa via Swagger UI
  • ✅ Testes unitários e de integração
  • ✅ Containerização completa com Docker

🚀 Como rodar

Pré-requisitos

▶️ Rodando com Docker (recomendado)

# 1. Clone o repositório
git clone https://github.com/Mgrsantos/minha-api.git
cd minha-api

# 2. Suba os containers (API + PostgreSQL)
docker-compose up --build

A API estará disponível em: http://localhost:8080

▶️ Rodando localmente

# 1. Configure o banco no application.properties
spring.datasource.url=jdbc:postgresql://localhost:5432/minha_api
spring.datasource.username=postgres
spring.datasource.password=SUA_SENHA

# 2. Execute o projeto
./mvnw spring-boot:run

📋 Endpoints

🔐 Autenticação (público)

Método Endpoint Descrição
POST /auth/registrar Cadastra novo usuário
POST /auth/login Retorna token JWT

Exemplo de registro:

POST /auth/registrar
{
  "email": "usuario@email.com",
  "senha": "123456"
}

Exemplo de login:

POST /auth/login
{
  "email": "usuario@email.com",
  "senha": "123456"
}

Resposta:

{
  "token": "eyJhbGciOiJIUzI1NiJ9..."
}

📦 Produtos (requer token JWT)

Método Endpoint Descrição
GET /produtos Lista todos os produtos
GET /produtos/{id} Busca produto por ID
POST /produtos Cria novo produto
PUT /produtos/{id} Atualiza produto
DELETE /produtos/{id} Remove produto

Header obrigatório:

Authorization: Bearer SEU_TOKEN_JWT

Exemplo de criação:

POST /produtos
{
  "nome": "Notebook",
  "preco": 3500.00
}

📖 Documentação

Com a aplicação rodando, acesse o Swagger UI:

http://localhost:8080/swagger-ui/index.html

🧪 Testes

# Rodar todos os testes
./mvnw test

Cobertura atual: 11 testes — ProdutoServiceTest (7) + ProdutoControllerTest (3) + MinhaApiApplicationTests (1)


🏗️ Arquitetura

src/
├── main/java/com/gapi/minha_api/
│   ├── controller/        # Endpoints REST
│   ├── service/           # Regras de negócio
│   ├── repository/        # Acesso ao banco
│   ├── model/             # Entidades JPA
│   ├── dto/               # Data Transfer Objects
│   ├── security/          # JWT, Filtros, Config
│   └── exception/         # Tratamento global de erros
└── test/                  # Testes unitários e de integração

👩‍💻 Autora

Gabriela Rondon — Desenvolvedora Backend

LinkedIn GitHub Email


Desenvolvido com ☕ e muito Java

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors