Skip to content

DeiviHerreraDiaz09/ApiRestSpringBoot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

34 Commits

Repository files navigation

Manga Project API REST con Spring Boot

Descripci贸n General

Este proyecto consiste en una API REST construida con Spring Boot para gestionar informaci贸n de manga. Proporciona puntos finales para registrar y recuperar detalles de manga, manejar autenticaci贸n de usuario y gestionar detalles de alquiler de manga. La API est谩 asegurada mediante JSON Web Tokens (JWT) para garantizar un control de acceso adecuado.

Inicio R谩pido

Para ejecutar el proyecto localmente, sigue estos pasos:

1. Clona el repositorio:

git clone https://github.com/DeiviHerreraDiaz09/ApiRestSpringBoot.git

2. Abre el proyecto en tu IDE preferido.

3. Configura la conexi贸n a la base de datos en el archivo application.properties.

4. Construye y ejecuta la aplicaci贸n Spring Boot.

Puntos finales de la API

Operaciones de Manga

1. A帽adir Manga

  • Punto final: POST /api/mangas/add
  • Descripci贸n: Registra un nuevo manga.
  • Par谩metros de solicitud:
    • file (MultipartFile): Archivo de imagen del manga.
    • title (String): T铆tulo del manga.
    • description (String): Descripci贸n del manga.
    • amount (Integer): Cantidad de manga.
    • price (Integer): Precio del manga.
  • Encabezado de autorizaci贸n: Token con el rol "administrador" requerido.
  • Ejemplo de solicitud usando Postman: Ejemplo de respuesta:
"Manga creado exitosamente"

2. Obtener todos los Mangas

  • Punto final: GET /api/mangas/list
  • Descripci贸n: Recupera una lista de todos los mangas.
  • Ejemplo de solicitud usando Postman:

Ejemplo de respuesta:

[
  {
    "id": 1,
    "title": "Mi Manga",
    "description": "Historia emocionante",
    "amount": 10,
    "price": 5,
    "image": "manga_image.jpg"
  },
  ...
]

3. Obtener Imagen de Manga

  • Punto final: GET /api/mangas/image/{imageName}
  • Descripci贸n: Recupera la imagen de un manga espec铆fico.
  • Variable de ruta:
    • imageName (String): Nombre del archivo de imagen del manga.
  • Ejemplo de solicitud usando Postman:

Respuesta: Descarga del archivo de imagen.

Operaciones de Usuario

1. A帽adir Usuario

  • Punto final: POST /api/users/add
  • Descripci贸n: Registra un nuevo usuario.
  • Cuerpo de la solicitud: Objeto de usuario con correo electr贸nico, contrase帽a, etc.
  • Ejemplo de solicitud usando Postman: Ejemplo de respuesta:
{
  "idUsuario": 1,
  "email": "user@example.com",
  ...
}

2. Obtener todos los Usuarios

  • Punto final: GET /api/users/list
  • Descripci贸n: Recupera una lista de todos los usuarios.
  • Ejemplo de solicitud usando Postman: Ejemplo de respuesta:

[
  {
    "idUsuario": 1,
    "email": "user@example.com",
    ...
  },
  ...
]

3. Inicio de Sesi贸n de Usuario

  • Punto final: POST /api/users/login
  • Descripci贸n: Autentica a un usuario y genera un token JWT.
  • Cuerpo de la solicitud: Objeto de usuario con correo electr贸nico y contrase帽a.
  • Ejemplo de solicitud usando Postman: Ejemplo de respuesta:

[
  1,
  "eyJhbGciOiJIUzI1NiJ9...",
  "user"
]

4. Verificar Token

  • Punto final: GET /api/users/verificar
  • Descripci贸n: Verifica la validez de un token JWT.
  • Encabezado de autorizaci贸n: Token JWT.
  • Ejemplo de solicitud usando Postman: Ejemplo de respuesta:
{
  "status": "El token es v谩lido"
}

Operaciones de Detalles de Manga

1. A帽adir Detalles de Manga

  • Punto final: POST /api/details/add
  • Descripci贸n: A帽ade detalles para el alquiler de manga.
  • Cuerpo de la solicitud: Objeto de detalles de manga.
  • Ejemplo de solicitud usando Postman: Ejemplo de respuesta:

{
  "id": 1,
  "fechaAlquiler": "2023-01-01",
  ...
}

2. Obtener Todos los Detalles de Manga

  • Punto final: GET /api/details/list
  • Descripci贸n: Recupera una lista de todos los detalles de manga.
  • Ejemplo de solicitud usando Postman: Ejemplo de respuesta:

[
  {
    "id": 1,
    "fechaAlquiler": "2023-01-01",
    "idUserFK": 1,
    "idMangaFK": 1,
    "idUserFKName": "John Doe",
    "idMangaFKName": "Mi Manga"
  },
  ...
]

3. Actualizar Detalles de Manga

  • Punto final: PUT /api/details/{id}
  • Descripci贸n: Actualiza detalles para un alquiler espec铆fico de manga.
  • Variable de ruta:
    • id (Integer): ID de detalles de manga.
  • Cuerpo de la solicitud: Objeto actualizado de detalles de manga.
  • Ejemplo de solicitud usando Postman: Ejemplo de respuesta:

{
  "id": 1,
  "fechaAlquiler": "2023-01-01",
  "fecha_devolucion": "2023-01-10",
  ...
}

Triggers Incrementales y Decrementales

Hemos implementado triggers para gestionar el inventario de mangas de manera incremental y decremental. Estos triggers se encargan de actualizar autom谩ticamente la cantidad de mangas disponibles al agregar nuevos detalles de alquiler o actualizar los detalles existentes.

Trigger Decremental


DELIMITER $$

CREATE TRIGGER after_insert_detail_manga
AFTER INSERT ON detail_manga
FOR EACH ROW
BEGIN
   UPDATE manga
   SET amount = amount - 1
   WHERE id_manga = NEW.id_mangafk;
END;

$$

DELIMITER ;

Trigger Incremental


DELIMITER $$

CREATE TRIGGER after_update_detail_manga
AFTER UPDATE ON detail_manga
FOR EACH ROW
BEGIN
   IF NEW.fecha_devolucion IS NOT NULL THEN
      UPDATE manga
      SET amount = amount + 1
      WHERE id_manga = NEW.id_mangafk;
   END IF;
END;

$$

DELIMITER ; 

Estos triggers aseguran que la cantidad de mangas disponibles se actualice autom谩ticamente seg煤n las transacciones de alquiler.

Releases

No releases published

Packages

No packages published