FastAPI patterns
FastAPI 0.136.1, Pydantic 2.13.3 (baseline at time of writing). Verify current versions at https://pypi.org/project/fastapi/ and https://pypi.org/project/pydantic/. Adapt advice to the versions in the project's requirements.txt, pyproject.toml, or lockfile.
Install: pip install "fastapi[standard]"
When to load this skill
- Project has
fastapiinrequirements.txt,pyproject.toml, orPipfile - Files contain
from fastapi import,@app.get,@router.get - Pydantic
BaseModelused as route input/output type - User asks about FastAPI, Pydantic v2, dependency injection, Depends(), response_model, HTTPException, OAuth2, APIKey
When not to load this skill
- Django or Flask without FastAPI
- Pydantic used outside a web framework (standalone validation)
- GraphQL with strawberry or ariadne
Reference files
| File | Topics |
|---|---|
| pydantic-schemas.md | BaseModel, Field(), field_validator, model_validator, model_config, ConfigDict, separate input/output schemas |
| dependency-injection.md | Depends(), Annotated pattern, yield dependencies, testing overrides |
| async-correctness.md | async def vs def, threadpool behavior, blocking I/O rules |
| response-models.md | response_model, response_model_exclude_unset, separate schemas |
| error-handling.md | HTTPException, custom exception handlers, status codes |
| openapi.md | Metadata, tags, disabling docs in production, route decorator params |
| auth.md | OAuth2PasswordBearer, JWT, APIKeyHeader, HTTPBasic, timing attacks |
| anti-patterns.md | Severity-labeled anti-patterns to flag in review |
References
- https://fastapi.tiangolo.com/
- https://pydantic.dev/docs/validation/latest/
- https://fastapi.tiangolo.com/tutorial/security/
- https://fastapi.tiangolo.com/async/
Maintenance
FastAPI and Pydantic release independently. Pydantic v2 introduced breaking changes from v1; verify the project's Pydantic version before applying patterns. Check PyPI for current versions.
Source: ku5ic/dotfiles — distributed by TomeVault.