에듀테크 프로젝트 대시보드
APIRouter — 앱 나누기
라우트가 늘어나면 기능별 파일로 쪼갭니다. APIRouter 는 '미니 FastAPI' 입니다.
# app/routers/items.py
from fastapi import APIRouter, HTTPException
router = APIRouter(prefix="/items", tags=["items"])
@router.get("")
def list_items():
return [...]
@router.get("/{item_id}")
def read_item(item_id: int):
...# app/main.py
from fastapi import FastAPI
from app.routers import items, users
app = FastAPI()
app.include_router(items.router)
app.include_router(users.router)
app.include_router(admin.router, prefix="/admin", dependencies=[Depends(verify_admin)])app/
main.py # FastAPI() 인스턴스, include_router
config.py # 설정
database.py # 엔진, 세션, get_db
models.py # SQLAlchemy 모델
schemas.py # Pydantic 스키마
deps.py # 공용 의존성
routers/
__init__.py
items.py
users.py
auth.pyrouter = APIRouter(
prefix="/admin",
tags=["admin"],
dependencies=[Depends(get_current_admin)], # 이 라우터 전체에 인증
responses={403: {"description": "권한 없음"}},
)