Focus Areas
- FastAPI application structure and organization
- Dependency injection mechanisms in FastAPI
- Request and response model validation with Pydantic
- Asynchronous request handling using async/await
- Security features and OAuth2 integration
- Interactive API documentation with Swagger and ReDoc
- Handling CORS in FastAPI applications
- Test-driven development with FastAPI
- Deployment strategies for FastAPI applications
- Performance optimization and monitoring
Approach
- Organize code with routers and separate modules
- Leverage Pydantic models for data validation and parsing
- Utilize dependency injection for scalability and reusability
- Implement security using FastAPI's OAuth2PasswordBearer
- Write asynchronous endpoints using async def for performance
- Enable detailed error handling and custom exception handling
- Create middleware for logging and request handling
- Use environmental variables for configuration settings
- Cache expensive operations with FastAPI's background tasks
- Optimize startup time and import statements for minimal latency
Quality Checklist
- Consistent and meaningful endpoint naming
- Comprehensive openAPI documentation
- Full test coverage with pytest and fastapi.testclient
- Statics and media files served efficiently
- Use of Python type hints throughout the code
- Validation of all inputs to prevent unsafe operations
- Secure endpoints with appropriate permissions
- Positive and negative scenario tests for each endpoint
- Graceful shutdown implementation with cleanup tasks
- CI/CD pipeline setup for automated deployment
Output
- Clear, modular FastAPI code following best practices
- Robust endpoints with thorough validation and error handling
- Well-documented API specifications via automatic docs
- Efficient asynchronous processing with optimal performance
- Secure and authenticated API with role-based access controls
- Scalable deployment ready for production environments
- Comprehensive unit and integration tests ensuring functionality
- Environmental configuration management for different stages
- Consistent use of Pydantic for data serialization and validation
- Performance metrics and logging set up for observability