ForoHub API es una API desarrollada en Java utilizando Spring Boot, que permite la creación y gestión de tópicos y respuestas en un foro. La aplicación está diseñada siguiendo una arquitectura por capas, con uso de DTOs y patrones de diseño para mantener un código limpio y mantenible.
- Java 17
- Spring Boot
- MySQL 8
- Librerías y Dependencias:
spring-boot-starter-data-jpa
spring-boot-starter-security
com.auth0:java-jwt
spring-boot-starter-validation
spring-boot-starter-web
spring-boot-devtools
mysql-connector-j
lombok
spring-boot-starter-test
spring-security-test
- Gestión de Tópicos: Crea, lee, actualiza y elimina tópicos en el foro.
- Gestión de Respuestas: Crea, lee, actualiza y elimina respuestas para los tópicos.
- Autenticación y Autorización: Utiliza JWT para la autenticación y autorización de usuarios.
- Validación: Validación de datos de entrada utilizando Spring Boot Validation.
-
Clonar el repositorio:
git clone https://github.com/tuusuario/foroHub-api.git cd foroHub-api
-
Configurar la base de datos:
- Crear una base de datos MySQL.
- Configurar las credenciales de la base de datos en el archivo
application.properties
.
spring.datasource.url=jdbc:mysql://localhost:3306/foroHub spring.datasource.username=tu_usuario spring.datasource.password=tu_contraseña spring.jpa.hibernate.ddl-auto=update
-
Construir y ejecutar la aplicación:
./mvnw clean install ./mvnw spring-boot:run
- Crear un usuario
- URL:
/register
- Método:
POST
- Body:
Iniciar Sesion
{ "name": "Nombre del usuario", "email": "email del usuario", "password": "password del usuario", }
- URL:
/Login
- Método:
POST
- Body:
{ "email": "email del usuario", "password": "password del usuario", }
- URL:
-
Crear un Tópico
- URL:
/topic
- Método:
POST
- Body:
{ "topicID": "Id del topico", "title": "Nuevo titulo del Tópico", "message": "Message del topico", "author": "Author del topico", "response": "Respuesta del topico }
- URL:
-
Obtener todos los Tópicos
-
URL:
/topic
-
Método:
GET
{ "topicID": "Id del topico", "title": "Nuevo titulo del Tópico", "message": "Message del topico", "author": "Author del topico", "response": "Respuesta del topico" }
-
-
Obtener un Tópico por ID
- URL:
/topics/ahow/{id}
- Método:
GET
- URL:
-
Actualizar un Tópico
- URL:
/topics/update/{id}
- Método:
PUT
- Body:
{ "topicID": "Id del topico", "title": "Nuevo titulo del Tópico", "message": "Message del topico", "author": "Author del topico", "response": "Respuesta del topico" }
- URL:
-
Eliminar un Tópico
- URL:
/topics/delete/{id}
- Método:
DELETE
- URL:
-
Crear una Respuesta
- URL:
/response
- Método:
POST
- Body:
{ "content": "Contenido de la Respuesta" }
- URL:
-
Obtener una Respuesta por ID
- URL:
/api/responses/{id}
- Método:
GET
- URL:
-
Actualizar una Respuesta
- URL:
/response/{id}
- Método:
PUT
- Body:
{ "content": "Nuevo Contenido de la Respuesta" }
- URL:
La aplicación sigue una arquitectura por capas:
- Controller: Maneja las solicitudes HTTP y las respuestas.
- Service: Contiene la lógica de negocio.
- Repository: Interactúa con la base de datos.
- DTO: Objetos de Transferencia de Datos utilizados para transferir datos entre las capas.