[python] BaseModel

Yoo·2025년 8월 21일

BaseModel

  • 정의

    데이터 유효성 검사 Pydantic 라이브러리에서 제공하는 데이터 모델 클래스입니다.
    from pydantic import BaseModel
  • 역할

    FastAPI에서 요청 데이터를 자동으로 피싱하고 검증

    JSON, dict 등 입력값을 Python 객체로 자동 변환
    {"Server" : "Google"} == {data.server="Google"}

    잘못된 값은 자동으로 오류 응답(422 ERROR)
    422 ERROR: 데이터 유효성 검사 실패, 잘못된 데이터 형식, 서버 로직 문제 등

FastAPI + BaseModel

FastAPI는 JSON을 BaseModel로 정의된 모델에 맞춰 유효성을 검사
필드가 잘못되면 422 에러로 응답하고, 모든 검사를 통과하면 파라미터로 전달

1. 모델 정의

from pydantic import BaseModel

class DnsApplyRequest(BaseModel):
    server: str

JSON 요청에 "server" 라는 문자열 필드가 들어와야 함

2. 엔드포인트 함수에서 사용

@router.post("/apply")
def dns_apply(data: DnsApplyRequest):
    server = data.server.strip()

data에 Pydantic이 만든 DnsApplyRequest 객체가 들어있음

3. 오류 발생

서버 값에 올바른 값이 들어가면 422 에러 발생

{
  "detail": [
    {
      "loc": ["body", "server"],
      "msg": "field required",
      "type": "value_error.missing"
    }
  ]
}

4. 문법

from pydantic import BaseModel, Field

class DnsApplyRequest(BaseModel):
    server: str = Field(..., min_length=3, max_length=20, description="지원하는 DNS 이름")

...: 필수 항목(None X)
min || max_length: 문자열 길이 제한
description: Swagger 문서용 설명
server: str = "Google" 필드 기본값 설정 가능

profile
월1억벌기

0개의 댓글