API REST para la gestión de tópicos en un foro educativo. Permite crear, listar, actualizar y eliminar tópicos con autenticación JWT.
- Java 17
- Spring Boot 3.3.1
- Spring Data JPA (Hibernate)
- Spring Security con JWT
- MySQL (producción) / H2 (pruebas)
- Flyway (migraciones de base de datos)
- SpringDoc OpenAPI (documentación Swagger)
- Lombok
- Maven
- Java 17 o superior
- Maven 3.x
- MySQL 8.x (para entorno de producción)
# Clonar el repositorio
git clone https://github.com/usuario/apiRestForoHubChallenge.git
cd apiRestForoHubChallenge
# Compilar el proyecto
./mvnw clean compile
# Ejecutar la aplicación
./mvnw spring-boot:runLa API estará disponible en http://localhost:8080
| Método | Ruta | Descripción |
|---|---|---|
| POST | /login | Autentica usuario y retorna token JWT |
| Método | Ruta | Descripción |
|---|---|---|
| GET | /topicos | Lista tópico activos |
| POST | /topicos | Crea un nuevo tópico |
| PUT | /topicos | Actualiza un tópico existente |
| DELETE | /topicos/{id} | Elimina un tópico (lógico) |
La documentación interactiva de Swagger está disponible en:
- Swagger UI: http://localhost:8080/swagger-ui.html
- OpenAPI JSON: http://localhost:8080/v3/api-docs
La API utiliza autenticación JWT. Para acceder a los endpoints protegidos:
- Realizar una petición POST a
/logincon credenciales:
{
"email": "usuario@ejemplo.com",
"contrasena": "contraseña"
}- Incluir el token JWT en las siguientes peticiones:
Authorization: Bearer <token_jwt>
src/main/java/foro/hub/apiRest/
├── controller/ # Controladores REST
├── domain/ # Entidades y lógica de negocio
│ ├── topicos/ # Tópico
│ └── usuarios/ # Usuarios del sistema
├── infra/
│ ├── errores/ # Manejo global de excepciones
│ └── security/ # Configuración JWT y seguridad
└── ApiRestApplication.java
El proyecto utiliza Flyway para migraciones. Las migraciones se encuentran en:
src/main/resources/db.migration/
Walter Valverde