Skip to content

FRLCR/Entrega-Final-Cristillo-API-Springboot-TalentoTech

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

API de Gestión de Productos y Pedidos

API REST desarrollada con Spring Boot para la gestión de productos y pedidos para el curso de Talento Tech.

Base de Datos

Configuración de PostgreSQL

La aplicación utiliza una base de datos PostgreSQL con la siguiente configuración:

  • URL de conexión: jdbc:postgresql://10.0.2.107:5432/cursospring
  • Usuario: postgres
  • Contraseña: cursospring
  • Driver: org.postgresql.Driver
  • Dialecto de Hibernate: PostgreSQLDialect

Configuración de JPA/Hibernate

  • DDL Auto: update (actualiza automáticamente el esquema de base de datos)
  • Show SQL: false (no muestra las consultas SQL en consola)
  • Format SQL: true (formatea las consultas SQL cuando se muestran)

Endpoints de la API

Productos

1. Crear Producto

Crea un nuevo producto en el sistema.

  • Método: POST
  • URL: /products
  • Content-Type: application/json

Body (ejemplo):

{
  "name": "Laptop HP",
  "description": "Laptop HP Core i5 8GB RAM",
  "price": 45000.50,
  "stock": 10
}

Respuesta exitosa (201 Created):

{
  "id": 1,
  "name": "Laptop HP",
  "description": "Laptop HP Core i5 8GB RAM",
  "price": 45000.50,
  "stock": 10
}

2. Obtener Productos

Obtiene una lista de productos con filtros opcionales.

  • Método: GET
  • URL: /products
  • Parámetros de consulta (opcionales):
    • name: Filtra por nombre del producto (valor por defecto: "")
    • price: Filtra por precio del producto (valor por defecto: 0)
    • oos: Out of stock - Filtra productos sin stock (valor por defecto: false)

Ejemplos de uso:

GET /products
GET /products?name=Laptop
GET /products?price=45000
GET /products?oos=true
GET /products?name=Laptop&price=45000&oos=false

Respuesta exitosa (200 OK):

[
  {
    "id": 1,
    "name": "Laptop HP",
    "description": "Laptop HP Core i5 8GB RAM",
    "price": 45000.50,
    "stock": 10
  },
  {
    "id": 2,
    "name": "Mouse Logitech",
    "description": "Mouse inalámbrico",
    "price": 1500.00,
    "stock": 25
  }
]

3. Actualizar Producto

Actualiza un producto existente por su ID.

  • Método: PUT
  • URL: /products/{id}
  • Content-Type: application/json

Body (ejemplo):

{
  "name": "Laptop HP Actualizada",
  "description": "Laptop HP Core i7 16GB RAM",
  "price": 55000.00,
  "stock": 15
}

Respuesta exitosa (200 OK):

{
  "id": 1,
  "name": "Laptop HP Actualizada",
  "description": "Laptop HP Core i7 16GB RAM",
  "price": 55000.00,
  "stock": 15
}

4. Eliminar Producto

Elimina un producto del sistema por su ID.

  • Método: DELETE
  • URL: /product/{id}

Respuesta exitosa (200 OK):

{
  "id": 1,
  "name": "Laptop HP",
  "description": "Laptop HP Core i5 8GB RAM",
  "price": 45000.50,
  "stock": 10
}

Pedidos

1. Crear Pedido

Crea un nuevo pedido con una lista de productos y sus cantidades.

  • Método: POST
  • URL: /order
  • Content-Type: application/json

Body (ejemplo):

{
  "productsId": [1, 2, 3],
  "quantities": [2, 1, 5]
}

Descripción:

  • productsId: Lista de IDs de productos a incluir en el pedido
  • quantities: Lista de cantidades correspondientes a cada producto (mismo orden)

Respuesta exitosa (201 Created):

{
  "id": 1,
  "price": 92501.00,
  "items": [
    {
      "order": {...},
      "product": {
        "id": 1,
        "name": "Laptop HP",
        "description": "Laptop HP Core i5 8GB RAM",
        "price": 45000.50,
        "stock": 8
      },
      "quantity": 2
    },
    {
      "order": {...},
      "product": {
        "id": 2,
        "name": "Mouse Logitech",
        "description": "Mouse inalámbrico",
        "price": 1500.00,
        "stock": 24
      },
      "quantity": 1
    }
  ]
}

2. Obtener Todos los Pedidos

Obtiene una lista de todos los pedidos registrados en el sistema.

  • Método: GET
  • URL: /orders

Respuesta exitosa (200 OK):

[
  {
    "id": 1,
    "price": 92501.00,
    "items": [...]
  },
  {
    "id": 2,
    "price": 15000.00,
    "items": [...]
  }
]

Códigos de Estado HTTP

  • 200 OK: La solicitud fue exitosa
  • 201 Created: El recurso fue creado exitosamente
  • 400 Bad Request: Error en los datos enviados
  • 404 Not Found: Recurso no encontrado
  • 500 Internal Server Error: Error interno del servidor

Validaciones

Los productos deben cumplir con las siguientes validaciones:

  • name: No puede estar vacío
  • price: Debe ser un valor positivo mayor o igual a 0
  • stock: Debe ser un valor entero positivo

Los pedidos deben cumplir con:

  • La cantidad de IDs de productos debe coincidir con la cantidad de cantidades
  • Los productos deben existir en la base de datos
  • Debe haber stock suficiente para cada producto

Manejo de Errores

La API implementa un manejador global de excepciones que proporciona mensajes de error claros y consistentes en formato JSON.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages