FastAPI進級知識(三)JSON互換符号化

3259 ワード

作者:マイクオムレツ出典:https://www.cnblogs.com/mazhiyong/転載はこの声明を保留してください.ありがとうございます.
 
データの格納や転送を行う場合、PydanticモデルなどのデータをJSON互換フォーマット(dict、listなど)に変換する必要がある場合があります.
FastAPIは、jsonable_encoder関数を提供して実装される.
from datetime import datetime

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


class Item(BaseModel):
    title: str
    timestamp: datetime
    description: str = None


app = FastAPI()


@app.put("/items/{id}")
def update_item(id: str, item: Item):
    json_compatible_item_data = jsonable_encoder(item)
print(json_compatible_item_data)

上記の例では、Request Bodyが
{
    "title": "title",
    "timestamp": "2017-11-23 16:10:10"
}

印刷結果は次のようになります.
{'title': 'title', 'timestamp': '2017-11-23T16:10:10', 'description': None}

ここでjsonable_Encoderはdatetimeを文字列に変換し,Pydanticモデルをdictフォーマットに変換した.
他のタイプのデータ変換は、独自に実行できます.