Saltar al contenido

Detalles del pedido

Obtener los detalles de un pedido

Para obtener los detalles de un pedido debes enviar el id del pedido a /orders-details/all/{orderId}

[GET] https://fake-store-api-2no73ornoa-uc.a.run.app/api/orders-details/all/1

Response:

[
    {
        "id": 1,
        "orderId": 1,
        "productId": 2,
        "quantity": 10,
        "unitPrice": 899.99
    },
    {
        "id": 2,
        "orderId": 1,
        "productId": 4,
        "quantity": 20,
        "unitPrice": 499.99
    }
]

Actualizar los detalles de un pedido

Para actualizar los detalles de un pedido debes enviar un objeto como el siguiente a /orders-details/{orderDetailId}

[PUT] https://fake-store-api-2no73ornoa-uc.a.run.app/api/orders-details/1

# Body
{
    "productId": 2,
    "quantity": 15,
}

Solo un usuario autenticado (con un JWT válido) puede actualizar los detalles de su pedido.

El JWT debe ser incluido en el header Authorization de la petición.

Si el JWT no es válido, el servidor responderá con un error 401.

Si el JWT es válido, el servidor responderá con un 200 OK y los detalles del pedido actualizados.

Response:

{
    "id": 1,
    "orderId": 1,
    "productId": 2,
    "quantity": 15,
    "unitPrice": 899.99
}

Una vez hecho este cambio, los detalles del pedido se actualizarán y se podrá obtener los detalles del pedido actualizado.

[GET] https://fake-store-api-2no73ornoa-uc.a.run.app/api/orders-details/all/1

Response:

[
    {
        "id": 1,
        "orderId": 1,
        "productId": 2,
        "quantity": 15,
        "unitPrice": 899.99
    },
    {
        "id": 2,
        "orderId": 1,
        "productId": 4,
        "quantity": 20,
        "unitPrice": 499.99
    }
]

Pero también se actualizará el pedido, antes de actualizar los detalles del pedido teniamos:

{
    "id": 1,
    "orderDate": "2023-12-30",
    "orderStatus": "PENDING",
    "total": 18999.7
}

Después de actualizar los detalles del pedido tenemos:

GET https://fake-store-api-2no73ornoa-uc.a.run.app/api/orders/1
{
    "id": 1,
    "orderDate": "2023-12-30",
    "orderStatus": "PENDING",
    "total": 23499.65
}

De esta manera, el total del pedido se actualiza automáticamente cuando se actualizan los detalles del pedido.

  • Para que todo funcione bien, se realizan verificaciones para validar los datos que se envían en la petición.
  • Se valida el formato y también la existencia de los datos que se envían en la petición.

Modelo de datos

AtributoTipoDescripción
idNumberIdentificador único del detalle del pedido
quantityNumberCantidad de un producto en el pedido
unitPriceNumberPrecio unitario de un producto en el pedido
orderIdNumberIdentificador único del pedido al que pertenece el detalle
productIdNumberIdentificador único del producto

Al organizar los datos de esta manera, se puede tener un pedido con varios detalles y cada detalle puede tener un producto diferente.

De esta manera, un pedido puede tener varios productos, estos productos pueden ser diferentes y cada producto puede tener una cantidad diferente, además podemos editar los detalles de un pedido y el total del pedido se actualizará automáticamente.