python fastapi best practices cursorrules prompt f
via PatrickJS/awesome-cursorrules
FastAPI best practices: async-first, functional design, Pydantic validation, and scalable patterns.
What is python fastapi best practices cursorrules prompt f?
Cursor rules for Python FastAPI development emphasizing async operations, functional programming, and production-ready patterns. Use this rule when building scalable REST APIs with FastAPI, focusing on type safety, error handling, and performance optimization.
- Write async-first code with async def for I/O operations and def for pure functions
- Use Pydantic models for input validation and response schemas instead of raw dictionaries
- Structure projects with routers, utilities, and type definitions; use lowercase with underscores for file naming
- Implement error handling with HTTPException for expected errors and middleware for unexpected ones
- Optimize performance with caching strategies, lazy loading, and asynchronous database libraries (asyncpg, aiomysql)
- Use lifespan context managers for startup/shutdown instead of deprecated @app.on_event decorators
Applies to
File patterns this rule matches.
Rule definition (reference)
Source of truth, from the repository.
You are an expert in Python, FastAPI, and scalable API development.
Write concise, technical responses with accurate Python examples. Use functional, declarative programming; avoid classes where possible. Prefer iteration and modularization over code duplication. Use descriptive variable names with auxiliary verbs (e.g., is_active, has_permission). Use lowercase with underscores for directories and files (e.g., routers/user_routes.py). Favor named exports for routes and utility functions. Use the Receive an Object, Return an Object (RORO) pattern. Use def for pure functions and async def for asynchronous operations. Use type hints for all function signatures. Prefer Pydantic models over raw dictionaries for input validation.
File structure: exported router, sub-routes, utilities, static content, types (models, schemas).
Avoid unnecessary curly braces in conditional statements. For single-line statements in conditionals, omit curly braces. Use concise, one-line syntax for simple conditional statements (e.g., if condition: do_something()).
Prioritize error handling and edge cases:
FastAPI Pydantic v2 Async database libraries like asyncpg or aiomysql SQLAlchemy 2.0 (if using ORM features)
Use functional components (plain functions) and Pydantic models for input validation and response schemas. Use declarative route definitions with clear return type annotations. Use def for synchronous operations and async def for asynchronous ones. Minimize @app.on_event("startup") and @app.on_event("shutdown"); prefer lifespan context managers for managing startup and shutdown events. Use middleware for logging, error monitoring, and performance optimization. Optimize for performance using async functions for I/O-bound tasks, caching strategies, and lazy loading. Use HTTPException for expected errors and model them as specific HTTP responses. Use middleware for handling unexpected errors, logging, and error monitoring. Use Pydantic's BaseModel for consistent input/output validation and response schemas. Minimize blocking I/O operations; use asynchronous operations for all database calls and external API requests. Implement caching for static and frequently accessed data using tools like Redis or in-memory stores. Optimize data serialization and deserialization with Pydantic. Use lazy loading techniques for large datasets and substantial API responses. Refer to FastAPI documentation for Data Models, Path Operations, and Middleware for best practices.
Related rules
Senior full-stack TypeScript, React, Node.js guidance with clean architecture, testing, and WHY-oriented reasoning.
Quantitative factor research skills for designing, evaluating, and mining alpha factors in equities markets.
Android development with Jetpack Compose, clean architecture, and Material Design 3.
Angular development with Novo Elements UI library using standalone components.
Expert Angular 18 + TypeScript development with Jest, emphasizing clean code and performance.
Manage Kubernetes clusters, add-ons, stacks, and credentials via the Ankra CLI platform.