Actualización de Clientes: Implementación de Endpoint PATCH

Clase 11 de 23Curso de FastAPI

Resumen

Aprender a manejar un CRUD completo en una aplicación es esencial para gestionar clientes (customers) de manera eficiente en una base de datos. Este ejemplo ilustra cómo se puede crear un endpoint de actualización, permitiendo cambiar datos específicos sin reemplazar toda la información de un cliente.

¿Cómo se implementa el endpoint de actualización de clientes?

Para actualizar un cliente, se utiliza el método PATCH. Este método permite enviar datos al endpoint y actualizar solo los campos indicados en el request sin afectar los demás. En este proceso:

  • Se requiere el customer ID para identificar al cliente.
  • En el body del request, se incluye customer data, es decir, la información que se desea actualizar.

¿Qué modelo de datos se utiliza en la actualización?

En el modelo de datos, se define un tipo específico llamado customer update. Este modelo es diferente del de creación (create) porque:

  • La actualización no solicita ciertos campos como la contraseña, que sí se pide al crear un cliente.
  • Se separan los modelos para tener flexibilidad en los datos que se reciben en diferentes operaciones.

¿Cómo se convierte la información en un formato adecuado para la base de datos?

Para actualizar solo los campos indicados:

  • Se convierte customer data en un diccionario mediante customer_data.model_dump.
  • Se configura el parámetro exclude_unset para incluir únicamente los campos presentes en el request.

¿Cómo se guarda la actualización en la base de datos?

Una vez listo el diccionario con la información a actualizar:

  1. Se agrega la query a la sesión con session.add.
  2. Se ejecuta el cambio en la base de datos con session.commit.
  3. Se utiliza session.refresh para actualizar en memoria los valores del cliente, asegurando que los datos retornados sean los actualizados.

¿Cómo manejar la respuesta HTTP en la actualización?

Al realizar cambios en la base de datos, es importante ajustar el código de respuesta. Para este caso, se cambia a HTTP 201 Created, en lugar de HTTP 200 OK, usando un decorador con el nuevo status code.

¿Qué pasos adicionales ayudan a optimizar el código para equipos de desarrollo?

Para equipos de desarrollo, es importante modularizar el código en varios archivos para mejorar la organización y facilitar la colaboración. En futuras fases, este tipo de estructura será implementada para manejar un crecimiento efectivo de la aplicación.