요청 본문
간단하게 Request Body, Reponse Body의 내용을 정리하면 다음과 같다.
- Request Body - 요청 본문은 클라이언트가 API로 보낸 데이터를 의미한다.
- Response Body - 응답 본문은 API가 클라이언트에게 보내는 데이터를 의미한다.
Fastapi 에서 해당 요청 본문을 받기 위해서는 pydantic에서 BaseModel을 사용하여 처리한다.
변수에 여러 타입을 지정할 때에는 Union을 이용할 수 있지만 Python 3.10 이상부터는 | 을 이용해서 처리 할 수 있다.
from fastapi import FastAPI
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: str | None = None
price: float
tax: float | None = None
app = FastAPI()
@app.post("/items/")
async def create_item(item: Item):
return item
함수 내에서 모델 객체의 속성에는 dict() 을 이용하여 직접 엑세스 할 수 있다.
from fastapi import FastAPI
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: str | None = None
price: float
tax: float | None = None
app = FastAPI()
@app.post("/items/")
async def create_item(item: Item):
item_dict = item.dict()
if item.tax:
price_with_tax = item.price + item.tax
item_dict.update({"price_with_tax": price_with_tax})
return item_dict
요청 본문과 경로, 쿼리 매개변수를 함께 사용해서 처리 할 수 있다.
from fastapi import FastAPI
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: str | None = None
price: float
tax: float | None = None
app = FastAPI()
@app.put("/items/{item_id}")
async def create_item(item_id: int, item: Item, q: str | None = None):
result = {"item_id": item_id, **item.dict()}
if q:
result.update({"q": q})
return result
'FrameWork > Fastapi' 카테고리의 다른 글
[Fastapi] 경로 매개 변수에서의 유효성 검증 (1) | 2023.05.12 |
---|---|
[Fastapi] 유효성 검사, 필수 매개변수, 쿼리 매개변수 목록/다중 값 처리 (0) | 2023.05.12 |
[Fastapi] 쿼리 매개변수와 열거체(Enum) 처리 (0) | 2023.05.12 |
[Fastapi] 경로 매개변수와 순서 문제 처리 (0) | 2023.05.12 |
[Fastapi] Fastapi 프로젝트 생성 및 경로 설정하기 (0) | 2023.05.12 |