Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/deiviherreradiaz09/apirestspringboot

Rest API in Java - Sprint Boot 🎇
https://github.com/deiviherreradiaz09/apirestspringboot

apirestfull backend microservice spring-boot

Last synced: about 6 hours ago
JSON representation

Rest API in Java - Sprint Boot 🎇

Awesome Lists containing this project

README

        

# 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": "[email protected]",
...
}
```

### 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": "[email protected]",
...
},
...
]
```

### 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.