- 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()로 인코딩할 수 있게된다.