Este proyecto es una API en Java utilizando Spring Boot para un foro de discusión llamado "Foro Alura". La API permite realizar operaciones CRUD (Crear, Leer, Actualizar, Eliminar) en tópicos y otras entidades relacionadas.
La API cuenta con un endpoint para el registro de nuevos tópicos. Se aceptan solicitudes POST en la URI /topicos. Los datos del tópico, como el título, mensaje, autor y curso, deben enviarse en el cuerpo de la solicitud en formato JSON. La API aplica las siguientes reglas de negocio:
- Todos los campos son obligatorios.
- No se permiten registros duplicados con el mismo título y mensaje.
La API cuenta con un endpoint para obtener la lista de todos los tópicos. Se aceptan solicitudes GET en la URI /topicos. Los datos de cada tópico, incluyendo el título, mensaje, fecha de creación, estado, autor y curso, se devuelven en el cuerpo de la respuesta en formato JSON.
La API cuenta con un endpoint para obtener el detalle de un tópico específico. Se aceptan solicitudes GET en la URI /topicos/{id}, donde {id} representa el identificador único del tópico. Los datos del tópico, como el título, mensaje, fecha de creación, estado, autor y curso, se devuelven en el cuerpo de la respuesta en formato JSON.
La API cuenta con un endpoint para eliminar un tópico. Se aceptan solicitudes DELETE en la URI /topicos/{id}, donde {id} representa el identificador único del tópico a eliminar.
Además de estas funcionalidades principales, para completar el foro, sería necesario contar con otros endpoints para crear, listar, actualizar y eliminar otras entidades, como usuarios y respuestas.
La API también incluye funcionalidades para el registro de nuevos usuarios y la autenticación de los mismos. Se aceptan solicitudes POST en la URI /usuarios para registrar nuevos usuarios. Los datos del usuario, como el nombre, correo electrónico, nombre de usuario y contraseña, deben enviarse en el cuerpo de la solicitud en formato JSON. La API aplica las siguientes reglas de negocio:
Todos los campos son obligatorios. No se permiten registros duplicados con el mismo correo electrónico o nombre de usuario. La contraseña del usuario se almacena de forma segura utilizando encriptación. Se recomienda utilizar una función de hashing para proteger la contraseña en caso de una posible brecha de seguridad.
La autenticación de los usuarios se realiza mediante el uso de JSON Web Tokens (JWT). Después de que un usuario se registre correctamente e inicie sesión proporcionando sus credenciales (correo electrónico/contraseña), la API generará un JWT que se enviará al cliente. El cliente debe incluir el JWT en los encabezados de las solicitudes posteriores para demostrar que está autenticado y autorizado para acceder a los recursos protegidos.
- Java: Lenguaje de programación principal utilizado en el desarrollo de la API REST.
- Spring Boot: Framework de desarrollo de aplicaciones Java que simplifica la creación de aplicaciones basadas en Spring.
- Controladores (Controllers): Se utilizan para manejar las solicitudes HTTP y definir los puntos finales de la API.
- Repositorios (Repositories): Se utilizan para interactuar con la base de datos y realizar operaciones CRUD en los modelos de datos.
- Base de datos: Se utiliza una base de datos (por ejemplo, MySQL, PostgreSQL) para almacenar la información de los tópicos, usuarios, respuestas, etc.
Readme-Foro.mp4
Para configurar y ejecutar la aplicación:
- Clona el repositorio en tu máquina local.
- Configura la base de datos según la base de datos de tu elección.
- Actualiza la configuración de la base de datos en el archivo de configuración de la aplicación (
application.properties
oapplication.yml
). - Ejecuta la aplicación utilizando tu IDE preferido o mediante la línea de comandos.
- Realiza las solicitudes HTTP correspondientes utilizando herramientas como Postman o cURL.