Favoritos - bootcamp-uchile-2026/grupo-4-backend GitHub Wiki

Favoritos

Servicio encargado de gestionar la lista de productos favoritos del usuario dentro del ecommerce.

El servicio permite consultar los productos favoritos, agregar un producto a la lista y eliminarlo de ella.

Endpoints

  • GET /favoritos - Obtener lista de productos favoritos
  • POST /favoritos/{productoId} - Agregar un producto a favoritos
  • DELETE /favoritos/{productoId} - Eliminar un producto de favoritos

Modelo

Favorito

Representa un producto incluido en la lista de favoritos.

Campo Tipo Descripción
id number Identificador único del registro de favorito
productoId number Identificador del producto agregado a favoritos
nombre string Nombre del producto
precio number Precio actual del producto en pesos chilenos (CLP)
imagen string URL de la imagen del producto

DTOs

FavoritoResponseDto

DTO utilizado para representar un producto favorito en las respuestas de la API.

Campo Tipo Descripción
id number Identificador único del registro de favorito
productoId number Identificador del producto
nombre string Nombre del producto
precio number Precio actual en CLP
imagen string URL de la imagen

Ejemplo de Response Body

{
  "id": 1,
  "productoId": 1,
  "nombre": "Mermelada de frutilla",
  "precio": 5000,
  "imagen": "https://placehold.co/600x400"
}

Los endpoints para agregar y eliminar favoritos reciben productoId como parámetro de ruta; no requieren un cuerpo de solicitud.

Endpoints detallados

GET /favoritos

Obtiene la lista de productos favoritos del usuario.

Response — 200 OK

[
  {
    "id": 1,
    "productoId": 1,
    "nombre": "Mermelada de frutilla",
    "precio": 5000,
    "imagen": "https://placehold.co/600x400"
  },
  {
    "id": 2,
    "productoId": 3,
    "nombre": "Aceite de oliva",
    "precio": 9000,
    "imagen": "https://placehold.co/600x400"
  }
]

POST /favoritos/{productoId}

Agrega un producto a la lista de favoritos del usuario.

Path Parameters

Parámetro Tipo Requerido Descripción
productoId number Sí Identificador del producto que se desea agregar. Se valida como número entero mediante ParseIntPipe.

Ejemplo de solicitud

POST /favoritos/1

No requiere Request Body.

Response — 201 Created

{
  "id": 1,
  "productoId": 1,
  "nombre": "Mermelada de frutilla",
  "precio": 5000,
  "imagen": "https://placehold.co/600x400"
}

Response — 400 Bad Request

Se produce cuando productoId no tiene un formato de número entero válido.

La estructura concreta del mensaje depende del manejo de errores configurado en la aplicación.

DELETE /favoritos/{productoId}

Elimina un producto de la lista de favoritos del usuario.

Path Parameters

Parámetro Tipo Requerido Descripción
productoId number Sí Identificador del producto que se desea eliminar. Se valida como número entero mediante ParseIntPipe.

Ejemplo de solicitud

DELETE /favoritos/1

Response — 204 No Content

No se retorna un cuerpo en la respuesta.

Response — 400 Bad Request

Se produce cuando productoId no tiene un formato de número entero válido.

La estructura concreta del mensaje depende del manejo de errores configurado en la aplicación.