Este proyecto es un ejemplo de una aplicación CRUD (Crear, Leer, Actualizar y Eliminar) básica desarrollada utilizando Java 17, Spring Boot 3 y PostgreSQL. La aplicación se encuentra en un entorno de contenedorizado utilizando Docker Compose.
- JDK 17
- Spring Boot 3
- Spring security 6
- PostgreSQL 15
- Java JWT
- Docker
Asegúrate de tener instalados los siguientes componentes en tu entorno de desarrollo antes de comenzar:
Sigue estos pasos para ejecutar la aplicación en tu entorno local:
git clone https://github.com/Angel-Raa/CRUD-spring-boot-postgresql.git
cd CRUD-spring-boot-postgresql
docker compose up -d
Se requiere autenticación para acceder a los endpoints de esta API. Puedes obtener un token JWT mediante los siguientes endpoints:
Método | Endpoint | Descripción |
---|---|---|
POST | /authentication/login |
Iniciar sesión de usuario |
POST | /authentication/sign |
Registro de usuario |
-
Iniciar sesión de usuario:
POST /authentication/login
- Cuerpo de la solicitud:
{ "username": "angel", "password": "admin" }
- Respuesta exitosa:
{ "jwt": "TOKEN_JWT" }
- Cuerpo de la solicitud:
-
Registro de usuario:
POST /authentication/sign
- Cuerpo de la solicitud:
{ "username": "angel", "password": "admin" }
- Respuesta exitosa:
{ "jwt": "TOKEN_JWT" }
- Cuerpo de la solicitud:
Método | Endpoint | Descripción |
---|---|---|
GET | /product/list |
Obtener todos los productos |
GET | /product/{id} |
Obtener un solo producto |
POST | /product/add |
Guardar un nuevo producto |
PUT | /product/update/{id} |
Actualizar un producto existente |
DELETE | /product/{id} |
Eliminar un producto |
-
Obtener todos los productos:
GET /product/list
- Respuesta exitosa:
[ { "id": 1, "name": "Papa gris", "description": "papa gris", "createAt": "2023-08-29T19:59:53.943202", "amount": 1000, "price": 25 }, { "id": 2, "name": "Arroz", "description": "arroz blanco desde campo Rd", "createAt": "2023-08-29T20:07:41.479372", "amount": 1000, "price": 25 } // ...otros productos ]
- Respuesta exitosa:
-
Obtener un solo producto:
GET /product/{id}
- Parámetros:
{id}
: ID del producto a consultar
- Respuesta exitosa:
{ "id": 1, "name": "Papa gris", "description": "papa gris", "createAt": "2023-08-29T19:59:53.943202", "amount": 1000, "price": 25 }
- Parámetros:
-
Guardar un nuevo producto:
POST /product/add
- Cuerpo de la solicitud:
{ "name": "Huevo gris", "description": "Huevo de gallina gringa", "amount": 1000, "price": 10 }
- Respuesta exitosa:
{ "id": 7, "name": "Huevo gris", "description": "Huevo de gallina gringa", "createAt": "2023-08-30T00:56:09.430315", "amount": 1000, "price": 10 }
- Cuerpo de la solicitud:
-
Actualizar un producto existente:
PUT /product/update/{id}
- Parámetros:
{id}
: ID del producto a actualizar
- Cuerpo de la solicitud:
{ "name": "Huevo gris", "description": "Huevo de gallina gringa", "amount": 1000, "price": 10 }
- Respuesta exitosa:
{ "message": "Producto actualizado exitosamente." }
- Parámetros:
-
Eliminar un producto:
DELETE /product/{id}
- Parámetros:
{id}
: ID del producto a eliminar
- Respuesta exitosa:
{ "message": "Producto eliminado exitosamente.", "code": 204, "http": "NO_CONTENT" }
- Parámetros:
Recuerda que debes incluir el token JWT en el encabezado de Autorización de cada solicitud a los endpoints protegidos.
Aquí hay algunos recursos adicionales que podrían ser útiles: