Skip to content

9. Body - Fields


1. Body - Fields

  • Query, PathBody를 사용하여 path operation function 매개변수에서 추가 유효성 검사 및 메타데이터를 선언할 수 있는 것과 동일한 방식으로, Pydantic의 Field를 사용하여 Pydantic 모델 내부에서 유효성 검사 및 메타데이터를 선언할 수 있다.


2. Import Field

  • 먼저, pydanticField를 임포트한다.


from typing import Optional
from fastapi import FastAPI, Body
from pydantic import BaseModel, Field

app = FastAPI()

class Item(BaseModel):
    name: str
    description: Optional[str] = Field(
        None, title="The description of the item", max_length=300
    )
    price: float = Field(..., gt=0, description="The price must be greater than zero")
    tax: Optional[float] = None

@app.put("/items/{item_id}")
async def update_item(item_id: int, item: Item = Body(..., embed=True)):
    results = {"item_id": item_id, "item": item}

    return results


3. Declare model attributes

  • 다음과 같이 모델 속성에 Field를 사용할 수 있다.


from typing import Optional
from fastapi import FastAPI, Body
from pydantic import BaseModel, Field

app = FastAPI()

class Item(BaseModel):
    name: str
    description: Optional[str] = Field(
        None, title="The description of the item", max_length=300
    )
    price: float = Field(..., gt=0, description="The price must be greater than zero")
    tax: Optional[float] = None

@app.put("/items/{item_id}")
async def update_item(item_id: int, item: Item = Body(..., embed=True)):
    results = {"item_id": item_id, "item": item}

    return results


  • FieldQuery, PathBody와 동일한 방식으로 작동하며 매개변수 등이 모두 동일하다.

References