https://fastapi.tiangolo.com/tutorial/body-fields/
Body - Fields - FastAPI
Body - Fields The same way you can declare additional validation and metadata in path operation function parameters with Query, Path and Body, you can declare validation and metadata inside of Pydantic models using Pydantic's Field. Import Field First, you
fastapi.tiangolo.com
<FastAPI 공식문서 참조>
* 경로연산함수의 Query, Path, Body paramter에서 부가적 검증이나 메타데이터를 선언했던 것처럼
Pydantic models 내부에 Pydantic의 Field를 이용하여 검증과 메타데이터를 선언할 수 있다.
1. Import Field
from pydantic import BaseModel, Field
*BaseModel은 예제를 위해 import
2. Declare model attributes
from typing import Annotated
from fastapi import Body, FastAPI
from pydantic import BaseModel, Field
app = FastAPI()
class Item(BaseModel):
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
위 코드의 description 부분을 보자.
description: str | None = Field(
default=None, title="The description of the item", max_length=300
)
Field는 Query, Path, Body와 같은 방식으로 작용한다(모두 같은 parameter들을 가지고 있다).
사실, 위 4가지 객체 모두 Param class의 subclass들이다. Param class는 FieldInfo class의 subclass이다.
그리고 Field는 FieldInfo를 인스턴스로 return한다.
Body도 마찬가지다. 다들 Path operation function의 parameter로써 공통된 구조를 가지고 있다.
3. Reference
https://fastapi.tiangolo.com/tutorial/body-fields/
Body - Fields - FastAPI
Body - Fields The same way you can declare additional validation and metadata in path operation function parameters with Query, Path and Body, you can declare validation and metadata inside of Pydantic models using Pydantic's Field. Import Field First, you
fastapi.tiangolo.com
'프레임워크 > FastAPI' 카테고리의 다른 글
[FastAPI] FastAPI [9] Declare Request Example Data (0) | 2023.04.03 |
---|---|
[FastAPI] FastAPI [8] Body - Nested Models (0) | 2023.03.28 |
[FastAPI] FastAPI [6] Body - Multiple Parameters (0) | 2023.03.27 |
[FastAPI] FastAPI [5] Path Parameters and Numeric Validations (0) | 2023.03.20 |
[FastAPI] FastAPI [4] Query Parameters and String Validations (0) | 2023.03.19 |