Skip to content

jokoframework/ias-2025-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IEEE IAS 2025 API

API REST completa desarrollada con Java 17 y Spring Boot 3.3.0 para la gestión de usuarios del sistema IEEE IAS 2025.

🚀 Características

  • Java 17 con Spring Boot 3.3.0
  • Maven como herramienta de construcción
  • Base de datos H2 en modo archivo
  • JPA/Hibernate para persistencia
  • OpenAPI 3.1 con Swagger UI para documentación
  • Arquitectura MVC estándar
  • Validación de entrada con Bean Validation
  • Manejo de excepciones centralizado
  • Upload de archivos para avatares

📁 Estructura del Proyecto

src/main/java/com/ieee/ias/
├── IasApplication.java              # Clase principal de Spring Boot
├── config/
│   └── OpenApiConfig.java          # Configuración de OpenAPI
├── controller/
│   ├── AuthController.java         # Controlador de autenticación
│   ├── IndexController.java        # Controlador de redirección
│   └── UsuarioController.java      # Controlador CRUD de usuarios
├── dto/
│   ├── CrearUsuarioRequest.java    # DTO para crear usuarios
│   ├── LoginRequest.java           # DTO para login
│   ├── LoginResponse.java          # DTO de respuesta de login
│   └── UsuarioResponse.java        # DTO de respuesta de usuario
├── entity/
│   └── Usuario.java                # Entidad JPA Usuario
├── exception/
│   ├── CredencialesInvalidasException.java
│   ├── EmailYaExisteException.java
│   ├── ErrorProcesamientoArchivoException.java
│   ├── GlobalExceptionHandler.java
│   └── UsuarioNoEncontradoException.java
├── repository/
│   └── UsuarioRepository.java      # Repositorio JPA
└── service/
    └── UsuarioService.java         # Servicio de lógica de negocio

🛠️ Requisitos

  • Java 17
  • Maven 3.6+

⚡ Ejecución Rápida

1. Clonar y navegar al proyecto

cd /git/sodep/ias-ieee-2025-api

2. Compilar y ejecutar

mvn spring-boot:run

3. Acceder a la aplicación

🗄️ Base de Datos

La aplicación utiliza H2 en modo archivo con la siguiente configuración:

  • URL: jdbc:h2:file:/tmp/db-ias2025
  • Usuario: sa
  • Contraseña: (vacía)

La base de datos se crea automáticamente al iniciar la aplicación.

📚 API Endpoints

Usuarios (/api/usuarios)

  • GET /api/usuarios - Obtener todos los usuarios
  • GET /api/usuarios/{id} - Obtener usuario por ID
  • POST /api/usuarios - Crear nuevo usuario
  • PUT /api/usuarios/{id} - Actualizar usuario
  • DELETE /api/usuarios/{id} - Eliminar usuario
  • POST /api/usuarios/{id}/avatar - Subir avatar

Autenticación (/api/auth)

  • POST /api/auth/login - Iniciar sesión

Otros

  • GET / - Redirecciona a Swagger UI

🧪 Ejemplo de Uso con cURL

Crear un usuario sin avatar:

curl -X POST http://localhost:8080/api/usuarios \
  -H "Content-Type: application/json" \
  -d '{
    "nombre": "Juan Pérez",
    "email": "juan.perez@ieee.org",
    "password": "contraseña123"
  }'

Hacer login:

curl -X POST http://localhost:8080/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{
    "email": "juan.perez@ieee.org",
    "password": "contraseña123"
  }'

Obtener todos los usuarios:

curl -X GET http://localhost:8080/api/usuarios

🔧 Configuración

Las principales configuraciones se encuentran en application.properties:

# Puerto del servidor
server.port=8080

# Base de datos H2
spring.datasource.url=jdbc:h2:file:/tmp/db-ias2025
spring.jpa.hibernate.ddl-auto=update

# Consola H2 habilitada
spring.h2.console.enabled=true

# Límites de subida de archivos
spring.servlet.multipart.max-file-size=10MB

📖 Documentación

La documentación completa de la API está disponible en Swagger UI una vez que la aplicación esté ejecutándose:

🏗️ Tecnologías Utilizadas

  • Spring Boot 3.3.0
  • Spring Data JPA
  • Spring Web
  • Spring Validation
  • H2 Database 2.2.224
  • SpringDoc OpenAPI 2.5.0
  • Maven 3.11.0

👥 Autor

IEEE IAS 2025 Team

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages