๋ณธ๋ฌธ - ํ๋¶
Query
,Path
๋ฐBody
๋ฅผ ์ฌ์ฉํ์ฌ ๊ฒฝ๋ก ๋์ ํจ์ ๋งค๊ฐ๋ณ์์์ ์ถ๊ฐ ๊ฒ์ฆ ๋ฐ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ ์ธํ ์์๋ ๊ฒ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก, Pydantic์ Field
๋ฅผ ์ฌ์ฉํ์ฌ Pydantic ๋ชจ๋ธ ๋ด๋ถ์์ ๊ฒ์ฆ ๋ฐ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ ์ธํ ์ ์์ต๋๋ค.
Field
์ํฌํธ¶
์ฐ์ , ์ด๋ฅผ ์ํฌํธํฉ๋๋ค:
from typing import Union
from fastapi import Body, FastAPI
from pydantic import BaseModel, Field
app = FastAPI()
class Item(BaseModel):
name: str
description: Union[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: Union[float, None] = 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
๊ฒฝ๊ณ
Field
๋ ๋๋จธ์ง ๊ฒ๋ค(Query
, Path
, Body
, ๋ฑ)๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก fastapi
๊ฐ ์๋๋ผ pydantic
์์ ์ง์ ์ํฌํธ ํฉ๋๋ค
๋ชจ๋ธ ์ดํธ๋ฆฌ๋ทฐํธ ์ ์ธ¶
๋ชจ๋ธ ์ดํธ๋ฆฌ๋ทฐํธ์ ํจ๊ป Field
๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค:
from typing import Union
from fastapi import Body, FastAPI
from pydantic import BaseModel, Field
app = FastAPI()
class Item(BaseModel):
name: str
description: Union[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: Union[float, None] = 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
Field
๋ Query
, Path
๋ฐ Body
์ ๋์ผํ ๋ฐฉ์์ผ๋ก ์๋ํ๋ฉฐ, ๋ชจ๋ ๋งค๊ฐ๋ณ์ ๋ฑ์ด ๋์ผํฉ๋๋ค.
๊ธฐ์ ์ธ๋ถ์ฌํญ
์ฌ์ค, Query
, Path
๊ทธ๋ฆฌ๊ณ ์ฌ๋ฌ๋ถ์ด ๋์ค์ ๋ณด๊ฒ ๋ ๋ค๋ฅธ ๊ฒ๋ค์ FieldInfo
ํด๋์ค์ ์๋ธ ํด๋์ค์ธ ๊ณตํต Param
ํด๋์ค์ ์๋ธ ํด๋์ค ๊ฐ์ฒด๋ฅผ ๋ง๋ญ๋๋ค.
๋ํ Pydantic์ Field
๋ FieldInfo
์ ์ธ์คํด์ค ์ญ์ ๋ฐํํฉ๋๋ค.
Body
์ญ์ FieldInfo
์ ์๋ธ ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ์ง์ ๋ฐํํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋์ค์ ๋ณด๊ฒ ๋ Body
ํด๋์ค์ ์๋ธ ํด๋์ค๋ ์์ต๋๋ค.
fastapi
์์ Query
, Path
๋ฐ ๋ค๋ฅธ ๊ฒ๋ค์ ์ํฌํธํ๋ฉด, ์ด๋ค ๋ชจ๋ ํน๋ณํ ํด๋์ค๋ฅผ ๋ฐํํ๋ ์ค์ ํจ์์์ ๊ธฐ์ตํ์ธ์.
ํ
ํ์
, ๊ธฐ๋ณธ๊ฐ, ๊ทธ๋ฆฌ๊ณ Field
๋ฅผ ๊ฐ๋ ๊ฐ ๋ชจ๋ธ์ ์ดํธ๋ฆฌ๋ทฐํธ๊ฐ Field
๋์ Path
, Query
๋ฐ Body
๋ฅผ ์ฌ์ฉํ์ฌ ๊ฒฝ๋ก ๋์ ํจ์ ๋งค๊ฐ๋ณ์์ ์ด๋ป๊ฒ ๋์ผํ ๊ตฌ์กฐ๋ฅผ ๊ฐ๋์ง ์์๋์ธ์.
์ถ๊ฐ ์ ๋ณด ์ถ๊ฐ¶
Field
, Query
, Body
๋ฑ์ ์ถ๊ฐ ์ ๋ณด๋ฅผ ์ ์ธํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ์ ๋ณด๋ ์์ฑ๋ JSON ์คํค๋ง์ ํฌํจ๋ฉ๋๋ค.
์์ ์ ์ธํ๋ ๊ฒ์ ๋ฐฐ์ธ๋ ๋ฌธ์์ ์ถ๊ฐ ์ ๋ณด๋ฅผ ์ ์ธํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ธ ๊ฒ์ ๋๋ค.
์์ฝ¶
๋ชจ๋ธ ์ดํธ๋ฆฌ๋ทฐํธ๋ฅผ ์ํ ์ถ๊ฐ ๊ฒ์ฆ๊ณผ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ ์ธํ๊ธฐ ์ํด Pydantic์ Field
๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ถ๊ฐ JSON ์คํค๋ง ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๊ธฐ ์ํด ์ถ๊ฐ ํค์๋ ์ธ์ ๋ํ ์ฌ์ฉํ ์ ์์ต๋๋ค.