[FastAPI Docs] JSON 호환 가능 인코더

JeongChaeJin·2022년 9월 1일
0
  • Data 유형 (Pydantic Model)을 JSON과 호환된 형태로 반환해야 하는 경우가 있다. (dict, list 등)
    • 데이터 베이스에 저장해야하는 경우
from datetime import datetime
from typing import Union

from fastapi import FastAPI
from fastapi.encoders import jsonable_encoder
from pydantic import BaseModel

fake_db = {}


class Item(BaseModel):
    title: str
    timestamp: datetime
    description: Union[str, None] = None


app = FastAPI()


@app.put("/items/{id}")
def update_item(id: str, item: Item):
    json_compatible_item_data = jsonable_encoder(item)
    fake_db[id] = json_compatible_item_data
  • datetime 객체는 JSON과 호환되는 데이터가 아니므로 받아들여 지지 않는다. 따라서 string으로 변환되던가 해야된다.
  • jsonable_encoder를 통해 Pydantic 모델을 dict로 datetime형식을 string으로 변환해줄 수 있다.
    • 이렇게 되면 json.dumps()로 인코딩할 수 있게된다.
profile
OnePunchLotto

0개의 댓글