Documentación interactiva de API de FastAPI
FastAPI genera automáticamente documentación interactiva de API basada en las anotaciones de tipo en el código, y proporciona por defecto dos interfaces: Swagger UI y ReDoc. Los desarrolladores pueden probar la API directamente en la documentación sin necesidad de herramientas adicionales.
Acceder a la documentación de la API
Después de ejecutar la aplicación FastAPI, visita las siguientes direcciones para ver la documentación:
| Dirección | Tipo de documentación | Características |
|---|---|---|
| http://127.0.0.1:8000/docs | Swagger UI | Pruebas interactivas, haz clic en "Try it out" para enviar la solicitud |
| http://127.0.0.1:8000/redoc | ReDoc | Buena experiencia de lectura, adecuada para navegar y consultar definiciones de API |
| http://127.0.0.1:8000/openapi.json | OpenAPI JSON | Especificación OpenAPI original en JSON, disponible para consumo por herramientas |
Swagger UI
Swagger UI proporciona una interfaz de usuario intuitiva que permite probar la API directamente en el navegador:

Pasos para probar la API
- Haz clic en la ruta a probar para expandir los detalles
- Haz clic en el botón"Try it out"Botón
- Rellena los valores de los parámetros
- Haz clic en el botón"Execute"Botón para enviar la solicitud
- Ver el resultado de la respuesta

ReDoc
ReDoc se centra en la legibilidad de la documentación, adecuado para navegar por las definiciones de la API:

Especificación OpenAPI
FastAPI utiliza el estándarOpenAPIpara convertir la API en un "esquema" (Schema). Visitahttp://127.0.0.1:8000/openapi.jsonpara ver el JSON original de OpenAPI:
{
"openapi": "3.1.0",
"info": {
"title": "FastAPI",
"version": "0.1.0"
},
"paths": {
"/items/{item_id}": {
"get": {
"responses": {
"200": {
"description": "Successful Response"
}
}
}
}
}
}
Usos de la especificación OpenAPI:
- Impulsa los sistemas de documentación Swagger UI y ReDoc
- Genera automáticamente código de cliente en varios lenguajes
- Integración con herramientas de prueba de API (como Postman)
- Compatible con una gran cantidad de herramientas y plataformas de terceros
Personalizar la información de la documentación de la API
Al crear una instancia de FastAPI, puedes personalizar los metadatos de la documentación:
Ejemplo
app = FastAPI(
title="Mi API", # Título de la API
description="Esta es una API de ejemplo que muestra la funcionalidad de personalización de la documentación", # Descripción de la API
version="1.0.0", # Versión de la API
terms_of_service="http://example.com/terms/", # URL de los términos de servicio
contact={ # Información de contacto
"name": "Desarrollador",
"url": "http://example.com/contact/",
"email": "[email protected]",
},
license_info={ # Información de la licencia
"name": "MIT",
"url": "https://opensource.org/licenses/MIT",
},
)
Añadir información de documentación a las rutas
Se puede añadir información de documentación detallada a cada ruta en el decorador y en la función:
Ejemplo
from fastapi import FastAPI, Path, Query
app = FastAPI()
@app.get(
"/items/{item_id}",
summary="Obtener información del producto", # Resumen breve
description="Obtener la información detallada del producto según su ID", # Descripción detallada
response_description="Objeto de información del producto", # Descripción de la respuesta
tags=["Gestión de productos"], # Etiqueta de agrupación
)
async def read_item(
item_id: Annotated[int, Path(ge=1, description="ID del producto")],
q: Annotated[str | None, Query(description="Palabra clave de búsqueda")] = None,
):
"""
Obtener información del producto:
- **item_id**: Identificador único del producto
- **q**: Palabra clave de búsqueda opcional
"""
return {"item_id": item_id, "q": q}
Descripción de los parámetros de documentación:
| Parámetro | Ubicación | Descripción |
|---|---|---|
summary | Decorador | Resumen breve de la ruta, que se muestra en la lista de rutas |
description | Decorador | Descripción detallada de la ruta, compatible con Markdown |
response_description | Decorador | Descripción de la respuesta |
tags | Decorador | Agrupación de rutas, que se muestra clasificada por etiquetas en la documentación |
| docstring | Cuerpo de la función | El docstring de la función, que se muestra como descripción |
Si se establecen tanto
descriptioncomo el docstring de la función,descriptiontiene prioridad. El docstring es compatible con formato Markdown y es adecuado para escribir descripciones más largas.
Agrupar con tags
tagsEl parámetro puede agrupar rutas relacionadas para mostrarlas de forma más clara en la documentación:
Ejemplo
app = FastAPI()
@app.get("/users/", tags=["Gestión de usuarios"])
async def read_users():
return [{"username": "Rick"}, {"username": "Morty"}]
@app.get("/items/", tags=["Gestión de productos"])
async def read_items():
return [{"name": "Foo"}, {"name": "Bar"}]
En Swagger UI, las rutas se muestran agrupadas por etiquetas.
Deshabilitar la documentación
En un entorno de producción, puede que quieras deshabilitar la documentación automática:
Ejemplo
# Deshabilitar la documentación
app = FastAPI(docs_url=None, redoc_url=None)
Resumen
- FastAPI genera automáticamente dos tipos de documentación interactiva: Swagger UI y ReDoc
- El contenido de la documentación se genera automáticamente basado en las anotaciones de tipo en el código; cuando el código se actualiza, la documentación se sincroniza automáticamente
- Usa
title、description、tagsy otros parámetros para personalizar la información de la documentación - El docstring de la función también aparece en la documentación
- En producción se puede usar
docs_url=Nonepara deshabilitar la documentación