반응형
데이터를 주고 받을때는 데이터가 올바른지 검증하는것이 중요합니다.
설치 및 매개변수에 대해 이전에 알아봤는데요~
이번 포스팅은 Pydantic's BaseModel 사용에 관한 포스팅입니다.
데이터 검증을 위해서는 데이터 형식을 사전에 정의해두는 것이 중요합니다.
이때 BaseModel을 상속받아 정의하게 됩니다.
from typing import Union
from fastapi import FastAPI
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: Union[str, None] = None
price: float
tax: Union[float, None] = None
app = FastAPI()
@app.post("/items/")
async def create_item(item: Item):
return item
# 모든 데이터 전달
{
"name": "Foo",
"description": "An optional description",
"price": 45.2,
"tax": 3.5
}
# 필수값만 전달
{
"name": "Foo",
"price": 45.2
}
이때 데이터를 전달받는 방식은 POST 메소드입니다.
해당 BaseModel을 통해 구현된것을 docs에서 확인을해보면
자동으로 API 문서가 작성된것을 확인 할 수 있습니다.
데이터를 조합하여 새로운 값을 생성할 수 도 있습니다.
......
@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
리퀘스트 바디 + 패스 + 쿼리 파라미터를 선언할 수 있습니다.
# Request body + path + query parameters
@app.put("/items/{item_id}")
async def create_item(item_id: int, item: Item, q: Union[str, None] = None):
result = {"item_id": item_id, **item.dict()}
if q:
result.update({"q": q})
return result
이렇게 Pydantic의 도움으로 손쉽게 데이터에 대한 검증을 할 수 있게 되었습니다.
Pydantic이 없이도 사용 가능 하겠지만 데이터 검증은 반드시 필요하며 패키지를 확인하고 사용할 수 있도록 습관을 가지도록 합니다.
(검증 되었고 관리되고 있는 패키지를 뛰어 넘는 무언가를 직접 만드는것은 영역이 다르다고 생각하는 편이 마음이 편할 수 있습니다.)
반응형
'Fastapi' 카테고리의 다른 글
FastAPI 자습서 스터디 기록 (Response Model) (0) | 2022.06.14 |
---|---|
FastAPI 자습서 스터디 기록 (Header Parameters) (0) | 2022.06.12 |
FastAPI 자습서 스터디 기록 (Multiple Parameters, Nested Models) (0) | 2022.06.12 |
FastAPI 자습서 스터디 기록 (Query Parameters and String and numeric Validations, ) (0) | 2022.06.12 |
FastAPI 자습서 스터디 기록 (설치 및 경로 매개변수, 쿼리 매개변수) (0) | 2022.06.12 |
댓글