지금까지 경로매개변수는 Path, 쿼리매개변수는 Query 을 통해 유효성을 검증하였다. 요청 본문의 body parameter 같은 경우에는 pydantic에 있는 Field을 통해 유효성을 검증 할 수 있다.
from typing import Annotated
from fastapi import Body, FastAPI
from pydantic import BaseModel, Field
app = FastAPI()
class Item(BaseModel):
"""
Field을 통해서 유효성 검증 시도
"""
name: str
description: str | None = Field(
default=None, title="The description of the item", max_length=300
)
price: float = Field(gt=0, description="The price must be greater than zero")
tax: float | None = None
@app.put("/items/{item_id}")
async def update_item(item_id: int, item: Annotated[Item, Body(embed=True)]):
results = {"item_id": item_id, "item": item}
return results
또한 여러 모델들을 속성유형으로 취급하여 모델을 중첩하여 사용 할 수 있습니다.
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Image(BaseModel):
url: str
name: str
class Item(BaseModel):
name: str
description: str | None = None
price: float
tax: float | None = None
tags: set[str] = set()
"""
하위 모델 image을 속성으로 사용
"""
image: Image | None = None
@app.put("/items/{item_id}")
async def update_item(item_id: int, item: Item):
results = {"item_id": item_id, "item": item}
return results
'FrameWork > Fastapi' 카테고리의 다른 글
[Fastapi] Header 매개 변수 (0) | 2023.05.12 |
---|---|
[Fastapi] 쿠키 매개변수 (0) | 2023.05.12 |
[Fastapi] Body Multiple Parameters (0) | 2023.05.12 |
[Fastapi] 경로 매개 변수에서의 유효성 검증 (1) | 2023.05.12 |
[Fastapi] 유효성 검사, 필수 매개변수, 쿼리 매개변수 목록/다중 값 처리 (0) | 2023.05.12 |