API RESTful desenvolvida em Kotlin com Spring Boot e MongoDB.
A aplicação utiliza um arquivo .env
para configurar variáveis de ambiente. Para configurar:
- Crie um arquivo
.env
na raiz do projeto baseado no.env.example
- Personalize as variáveis conforme necessário
Exemplo de arquivo .env
:
# Configuração do MongoDB - Ambiente Padrão
MONGODB_URI=mongodb://usuario:senha@localhost:27017/apiKt
MONGODB_DATABASE=apiKt
# JWT Security
JWT_SECRET=sua_chave_secreta_aqui_com_pelo_menos_32_caracteres
JWT_EXPIRATION=86400000
# Outras configurações por perfil...
Variável | Descrição | Valor padrão |
---|---|---|
MONGODB_URI | URI de conexão com o MongoDB (padrão) | mongodb://localhost:27017/apiKt |
MONGODB_DATABASE | Nome do banco de dados (padrão) | apiKt |
SERVER_PORT | Porta do servidor (padrão) | 8080 |
APP_NAME | Nome da aplicação (padrão) | api-kt |
LOG_LEVEL | Nível de log principal (INFO, DEBUG, etc) | INFO |
MONGO_LOG_LEVEL | Nível de log do MongoDB | DEBUG |
JWT_SECRET | Chave secreta para tokens JWT | (Necessário definir) |
JWT_EXPIRATION | Tempo de expiração do token em ms | 86400000 (24 horas) |
Variável | Descrição | Valor padrão |
---|---|---|
MONGODB_URI_DEV | URI do MongoDB (ambiente dev) | mongodb://localhost:27017/apiKtDev |
MONGODB_DATABASE_DEV | Nome do banco de dados (ambiente dev) | apiKtDev |
SERVER_PORT_DEV | Porta do servidor (ambiente dev) | 8081 |
APP_NAME_DEV | Nome da aplicação (ambiente dev) | api-kt-dev |
LOG_LEVEL_DEV | Nível de log (ambiente dev) | DEBUG |
MONGO_LOG_LEVEL_DEV | Nível de log do MongoDB (ambiente dev) | DEBUG |
Variável | Descrição | Valor padrão |
---|---|---|
MONGODB_URI_PROD | URI do MongoDB (ambiente prod) | mongodb://localhost:27017/apiKtProd |
MONGODB_DATABASE_PROD | Nome do banco de dados (ambiente prod) | apiKtProd |
SERVER_PORT_PROD | Porta do servidor (ambiente prod) | 8082 |
APP_NAME_PROD | Nome da aplicação (ambiente prod) | api-kt-prod |
LOG_LEVEL_PROD | Nível de log (ambiente prod) | INFO |
MONGO_LOG_LEVEL_PROD | Nível de log do MongoDB (ambiente prod) | INFO |
A aplicação suporta diferentes perfis de execução, cada um com suas configurações específicas:
# Perfil padrão - Porta 8080, database apiKt
./gradlew bootRun
# Perfil de desenvolvimento - Porta 8081, database apiKtDev
./gradlew bootRun --args='--spring.profiles.active=dev'
# Perfil de produção - Porta 8082, database apiKtProd
./gradlew bootRun --args='--spring.profiles.active=prod'
A API utiliza autenticação baseada em tokens JWT (JSON Web Tokens) para proteger rotas específicas.
A aplicação vem configurada com dois usuários padrão:
-
Admin
- Username:
admin
- Password:
admin123
- Role:
ROLE_ADMIN
- Username:
-
Usuário Comum
- Username:
user
- Password:
user123
- Role:
ROLE_USER
- Username:
POST /api/auth/login
- Autenticar usuário existente e obter token JWTPOST /api/auth/register
- Registrar novo usuário e obter token JWTGET /api/auth/me
- Obter informações do usuário autenticado
A API possui três níveis de acesso:
- Público (
/api/public/**
): Acessível sem autenticação - Usuário (
/api/players/**
): Requer autenticação com roleROLE_USER
ouROLE_ADMIN
- Admin (
/api/admin/**
): Requer autenticação com roleROLE_ADMIN
Para acessar endpoints protegidos, inclua o token JWT no cabeçalho de autorização:
curl -X GET http://localhost:8080/api/players/test \
-H "Authorization: Bearer seu_token_jwt_aqui"
A aplicação inclui uma interface web simples para testar a API:
- Acesse
http://localhost:8080/
em seu navegador - Faça login com as credenciais padrão (admin/admin123 ou user/user123)
- Use os botões para testar diferentes endpoints
GET /api/public/test
- Endpoint público para testar acesso sem autenticaçãoGET /api/players/test
- Endpoint protegido (requer ROLE_USER ou ROLE_ADMIN)GET /api/admin/test
- Endpoint administrativo (requer ROLE_ADMIN)
GET /api/players
- Lista todos os jogadoresGET /api/players/{id}
- Busca jogador por IDGET /api/players/username/{username}
- Busca jogador por usernamePOST /api/players
- Cria um novo jogadorPUT /api/players/{id}
- Atualiza um jogador existenteDELETE /api/players/{id}
- Remove um jogador