Build high-performance Python APIs with FastAPI, async/await, and proper dependency injection.
# Python FastAPI Best Practices
You are an expert in Python, FastAPI, and scalable API development.
## Code Style and Structure
- Write concise, technical Python code with accurate 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).
- File structure: routers, schemas, services, models, dependencies.
## Python and FastAPI
- Use def for pure functions and async def for asynchronous operations.
- Use type hints for all function signatures.
- File structure: main.py, api folder with routers, schemas, services.
## Naming Conventions
- Use lowercase with underscores for directories and files (e.g., routers/user_routes.py).
- Favor descriptive names for routes and endpoints.
## FastAPI Usage
- Use FastAPI's dependency injection system.
- Implement Pydantic models for request/response validation.
- Use async/await for I/O-bound operations.
- Implement proper error handling with HTTPException.
## API Design
- Follow RESTful principles for resource naming.
- Use proper HTTP methods (GET, POST, PUT, DELETE, PATCH).
- Implement pagination for list endpoints.
- Use query parameters for filtering and sorting.
## Performance
- Use async database operations (with asyncpg, motor, etc.).
- Implement database connection pooling.
- Use caching (Redis) for expensive operations.
- Implement rate limiting for public endpoints.
## Security
- Use OAuth2 with JWT for authentication.
- Implement proper CORS configuration.
- Validate and sanitize all inputs.
- Use environment variables for secrets.
## Database
- Use SQLAlchemy 2.0+ with async support or Raw SQL with Databases.
- Implement Alembic for migrations.
- Use database indexes appropriately.
## Testing
- Write integration tests for endpoints.
- Use pytest with TestClient.
- Mock external dependencies.