Capítulo 3.5: Documentación automática de Swagger
Tiempo de estudio: 30 minutos
1. Documentación de la API: Manual de operaciones de una estación espacial
Imagina que eres un astronauta nuevo llegando a la ISS. ¿Cómo sabrías qué interruptor controla qué y cómo manejar el brazo robótico? Necesitarías instrucciones detalladas y actualizadas.
La documentación de la API es un manual similar para los desarrolladores. Explica:
- Qué "puertos de acoplamiento" (endpoints) están disponibles.
- Qué "comandos" (métodos HTTP) se pueden enviar.
- Qué "carga" (datos) se necesita transmitir.
- Qué "telemetría" (respuestas) esperar.
El problema es que escribir la documentación manualmente es largo, aburrido y casi siempre se vuelve obsoleta.
💡 Analogía espacial:
La documentación manual son planos de papel que están en un archivo y no se actualizan después de la modernización de la estación. La documentación automática de FastAPI es un display interactivo en el Centro de Control de Misión que se actualiza en tiempo real después de cada cambio en la estación.
2. La Magia de FastAPI: ¿Cómo funciona?
FastAPI hace todo el "trabajo sucio" por ti, basándose en tu propio código. Escanea:
- Rutas: Todos los decoradores
@app.get
,@app.post
, etc. - Parámetros: Parámetros de ruta (
ship_id: int
) y de consulta. - Modelos Pydantic: Tus "planos" (
Spaceship
,SpaceshipCreate
). - Cadenas de documentación (docstrings): Descripciones que escribes entre comillas triples.
Basándose en estos datos, FastAPI genera un esquema según el estándar OpenAPI (anteriormente conocido como Swagger), y luego lo muestra a través de dos hermosas interfaces.
3. Explorando el "display del Centro de Control de Misión": Swagger UI
Swagger UI es una interfaz interactiva que permite no solo leer la documentación, sino también probar la API directamente desde el navegador.
Abra http://127.0.0.1:8000/docs
Verá:
- Lista de endpoints: Agrupados por etiquetas (por defecto, por nombre de recurso) y coloreados según los métodos HTTP.
- Descripciones: Los textos de sus docstrings (
"""..."""
) se muestran como descripciones de los endpoints. - Parámetros: Muestra qué parámetros (como
ship_id
) espera el endpoint, su tipo y si son obligatorios. - Cuerpo de la solicitud (Request Body): Para
POST
yPUT
muestra el esquema JSON generado a partir de su modelo Pydantic (SpaceshipCreate
). - Respuestas (Responses): Muestra los posibles códigos de estado y esquemas de respuesta, basados en
response_model
. - Botón "Try it out": Permite rellenar los parámetros y enviar una solicitud real a su servidor.
4. Mejorando la documentación: Etiquetas y descripciones
Hagamos nuestra documentación aún más profesional.
Paso 1: Añadiendo metadatos en FastAPI
Al crear app
, puede pasar información general sobre su API.
Cambie la línea app = FastAPI()
en main.py
:
# main.py
app = FastAPI(
title="API de Gestión de Flota",
description="API para la gestión de flotas de naves espaciales.",
version="1.0.0",
)
Paso 2: Agrupando endpoints con etiquetas Puede añadir etiquetas a cada endpoint para agruparlos por significado.
Añada el parámetro tags
en los decoradores:
# GET /spaceships
@app.get("/spaceships", response_model=List[Spaceship], tags=["Naves espaciales"])
# ...
# GET /spaceships/{ship_id}
@app.get("/spaceships/{ship_id}", response_model=Spaceship, tags=["Naves espaciales"])
# ...
# POST /spaceships
@app.post("/spaceships", response_model=Spaceship, status_code=201, tags=["Naves espaciales"])
# ...
# y así sucesivamente para PUT y DELETE
5. Vista alternativa: ReDoc
FastAPI proporciona otra interfaz para la documentación "de forma nativa" — ReDoc. Es menos interactiva, pero a menudo se considera más legible y es ideal para documentación estática.
Abra http://127.0.0.1:8000/redoc
Verá un diseño de tres columnas con navegación, descripciones de endpoints y esquemas de datos. Es una excelente manera de proporcionar documentación a sus "clientes" (por ejemplo, al equipo de frontend).
Cuestionario de repaso
🚀 Conclusión del capítulo:
Ha visto una de las "superpoderes" más potentes de FastAPI: la creación de documentación sin ningún esfuerzo.
- 📖 Su API ahora tiene dos tipos de documentación actualizada: Swagger UI y ReDoc.
- 🔬 La documentación es interactiva y permite probar la API al vuelo.
- 🏷️ Aprendió a mejorarla con metadatos y etiquetas.
¡El manual de operaciones está listo y siempre actualizado! En el capítulo final de esta sección, aprenderemos a manejar las "anomalías espaciales": errores y datos incorrectos.
📌 Verificación:
- Asegúrese de que en la dirección
http://127.0.0.1:8000/docs
se muestren el título, la descripción y los endpoints agrupados por etiquetas.- Verifique que su modelo
Spaceship
sea visible en la sección "Schemas".- Abra
http://127.0.0.1:8000/redoc
y evalúe la vista alternativa.⚠️ Si los cambios no aparecen: - Asegúrese de haber guardado el archivo
main.py
. - Compruebe que el servidoruvicorn
está ejecutándose con el flag--reload
y se ha recargado exitosamente.