FastAPI(planner 코드 리뷰 models.events)

2025. 5. 2. 19:50고급 웹프로그래밍

코드리뷰

from pydantic import BaseModel, ConfigDict
from beanie import Document

class Event(Document):
    id: int
    title: str
    description: str
    tags: lst[str]
    location: str
    created_at: str

    model_config = ConfigDict(
        json_schema_extra={ # Swegger에 보여줄 예시 데이터를 지정
            "example": {
                "id": 1,
                "title": "아..",
                "image": "path/to",
                "description": " 아",
                "tags": ["#잠 온다", "#한글 왜 안돼"],
                "location": "제1실습관",
                "created_at": "2023-10-01T12:00:00Z"
            }
        }

class EventUpdate(BaseModel): # Pydantic으로 유효성 검사
    title: str | None = None # str 타입을 입력 값으로 넣거나 None을 넣음 기본값은 None으로 
    image: str | None = None
    description: str | None = None
    tags: list[str] | None = None
    location: str | None = None
    created_at: str | None = None

용어 설명

  • BaseModel: Pydantic에서 데이터 유효성 검사(Validation)와 직렬화/역직렬화(Parsing)를 할 수 있게 해주는 기본 클래스
    • FastAPI에서 요청 본문, 응답 데이터, 스키마 정의 등 거의 모든 곳에 쓰이는 데이터 구조 선언 도구
  • ConfigDict: Pydantic 모델의 동작 방식을 세부적으로 조정할 수 있게 해주는 설정 클래스
    • ex. 모델을 불변으로 만들지, extra 필드를 허용할지, 예시를 보여줄지 등
설정 의미
populate_by_name=True alias 대신 실제 필드명으로도 값 채울 수 있음
extra="forbid" 정의되지 않은 필드가 들어오면 에러
json_schema_extra={...} Swagger 문서에 예시 표시 (동작엔 영향 없음) ✅
  • Document: Beanie ODM(Object Document Mapper)에서 제공하는 MongoDB 문서를 정의하는 기본 클래스
    • 내부적으로 BaseModel을 상속하고 있음
  • json_schema_extra: API문서에서 예시 데이터를 보여주기 위해 사용하는 설정
반응형