| name | fastapi-router-py |
| description | Create FastAPI routers with CRUD operations, authentication dependencies, and proper response models. Use when building REST API endpoints, creating new routes, implementing CRUD operations, or adding authenticated endpoints in FastAPI applications. |
| license | MIT |
| metadata | {"author":"Microsoft","version":"1.0.0"} |
FastAPI Router
Create FastAPI routers following established patterns with proper authentication, response models, and HTTP status codes.
Quick Start
Copy the template from assets/template.py and replace placeholders:
{{ResourceName}} → PascalCase name (e.g., Project)
{{resource_name}} → snake_case name (e.g., project)
{{resource_plural}} → plural form (e.g., projects)
Authentication Patterns
current_user: Optional[User] = Depends(get_current_user)
current_user: User = Depends(get_current_user_required)
Response Models
@router.get("/items/{item_id}", response_model=Item)
async def get_item(item_id: str) -> Item:
...
@router.get("/items", response_model=list[Item])
async def list_items() -> list[Item]:
...
HTTP Status Codes
@router.post("/items", status_code=status.HTTP_201_CREATED)
@router.delete("/items/{id}", status_code=status.HTTP_204_NO_CONTENT)
Integration Steps
- Create router in
src/backend/app/routers/
- Mount in
src/backend/app/main.py
- Create corresponding Pydantic models
- Create service layer if needed
- Add frontend API functions
Best Practices
- Pick
def or async def per endpoint based on whether you call async I/O; do not call blocking I/O from an async def handler.
- Manage long-lived resources (DB pools, HTTP clients) in
lifespan and inject via Depends; use with/async with for per-request resources.
Reference Files