Creación de servicios y endpoints en FastAPI con Docker

Clase 8 de 25Curso de Cursor AI Code Editor

Resumen

Ya avanzado en la configuración de una aplicación web backend con FastAPI, es momento de ver en detalle cómo se crean y validan endpoints pensando en una estructura modular y organizada. El uso de Docker para ejecutar comandos y debuggear Python ofrece varias ventajas, como verificar fácilmente el éxito de migraciones de base de datos y establecer puntos de control rápidos.

¿Cómo utilizo Docker para ejecutar comandos?

Con Docker, los comandos dentro del contenedor se ejecutan utilizando docker exec. Esta funcionalidad está disponible directamente desde un archivo Makefile, facilitando tareas frecuentes como ejecutar migraciones o cargar datos iniciales (seeders).

Dentro del contenedor también existe un archivo llamado test info diseñado para verificar el resultado de migraciones y la correcta inserción de datos. Este archivo permite establecer breakpoints mediante la extensión Python de Microsoft, facilitando revisar detalladamente la ejecución.

¿Qué es un servicio en FastAPI y cómo lo estructuro?

Crear endpoints directamente en funciones FastAPI puede volver la aplicación compleja rápidamente. Para evitar esto, es recomendable usar servicios que sean abstracciones a función específica del endpoint.

En este contexto se creó un nuevo folder denominado services, el cual alberga al servicio course service. Dicho servicio incluye dos métodos:

  • get_all_courses: retorna una lista completa de cursos registrados.
  • get_course_by_slook: detalla información específica de un curso utilizando un identificador único (slook).

Este servicio utiliza los modelos que previamente establecimos para acceder de forma directa a la base de datos. Además, se guió estrictamente por especificaciones definidas inicialmente en el archivo de contratos (00-contracts.md).

¿Cómo verifico mis endpoints creados en FastAPI?

Una vez hechos los endpoints, es crucial verificar su funcionalidad. Accediendo al navegador y ejecutando las rutas /courses y /courses/{slook}, podemos comprobar fácilmente que los endpoints devuelvan los resultados esperados. Así, validamos tanto funcionamiento de lógica interna como interacción con base de datos.

El resultado debe ser:

  • Listado completo de cursos.
  • Detalle específico del curso solicitado mediante un identificador.

Para complementar la verificación manual, se revisan también:

  • Correcta importación de servicios.
  • Modificación adecuada de archivos necesarios, como el inicializador en el módulo de servicios.

Una vez comprobado que todas estas piezas funcionan correctamente, habremos garantizado la calidad y organización interna de la aplicación backend diseñada con FastAPI y Docker.

¿Qué retos encontraste al seguir estos pasos? Comparte tus soluciones en comentarios.