Habilidad Experta de FastAPI
Generación y revisión idiomática de servicios FastAPI - una Habilidad de Agente para Python 3.14, FastAPI 0.115+ y Pydantic 2.
Busca en todas las páginas de la documentación
Generación y revisión idiomática de servicios FastAPI - una Habilidad de Agente para Python 3.14, FastAPI 0.115+ y Pydantic 2.
Produce una lista de verificación para API desplegable: estructura src/, pyproject.toml con uv, módulos de router, configuraciones mediante pydantic-settings, /health y /ready, logging estructurado, pruebas con pytest + httpx y un stub de Dockerfile.
| Entrada | Por qué |
|---|---|
| Nombre del servicio | Nombre del paquete, campo de log, etiqueta de imagen Docker |
| DB síncrona vs asíncrona | AsyncSession + asyncpg vs SQLAlchemy síncrono |
| Modelo de autenticación | Ninguno, clave API, OAuth2 JWT |
| Puerto predeterminado | 8000 o convención de plataforma |
| Ruta del monorepo | services/billing-api vs raíz del repositorio |
pyproject.toml con fastapi, uvicorn[standard], pydantic-settings, httpx, pytestapp/main.py con lifespan, stub de política CORS, inclusiones de routerapp/settings.py con BaseSettings y .env.exampleapp/routers/health.py con /health y /readytests/test_health.py usando TestClient o httpx.ASGITransportmodel_validate, Field(alias=...), no v1 .dict()..env.example.logging o structlog - sin print directo en rutas de producción.requests síncrono o CPU pesada sin to_thread.requires-python >= 3.14 cuando el estándar de la organización lo permita - documentar fallback a 3.13 si es necesario.cd services/billing-api
uv sync
uv run ruff check .
uv run pytest -q
uv run uvicorn app.main:app --reload &
curl -sf http://localhost:8000/health
curl -sf http://localhost:8000/ready# app/main.py
from contextlib import asynccontextmanager
from fastapi import FastAPI
from app.routers import health
@asynccontextmanager
async def lifespan(app: FastAPI):
yield
app = FastAPI(title="billing-api", lifespan=lifespan)
app.include_router(health.router)# app/routers/health.py
from fastapi import APIRouter
router = APIRouter(tags=["health"])
@router.get("/health")
def health() -> dict[str, str]:
return {"status": "ok"}
@router.get("/ready")
def ready() -> dict[str, str]:
return {"status": "ready"}FastAPI para APIs JSON ligadas a E/S. Django cuando el admin, el ORM monolítico y las plantillas son centrales - la habilidad no anula la ADR.
Solo cuando la entrada especifica persistencia desde el primer día - de lo contrario, stub del protocolo del repositorio y añadir la DB en un PR posterior.
uvicorn para desarrollo; producción a menudo gunicorn -k uvicorn.workers.UvicornWorker detrás de un proxy inverso.
Versiones de la Pila: Esta página fue escrita para Python 3.14.0 (estable 3.14, mantenimiento 3.13), FastAPI 0.115+, Django 5.2, Flask 3.1, Pydantic 2, PyTorch 2.6+, pandas 2.2+, Polars 1.x, ruff 0.9+ y uv 0.6+.
Revisado por Chris St. John·Última actualización: 16 jul 2026