在某些情况下,可能需要把数据(比如Pydantic模型)转换成JSON兼容的格式(如dict、list等)。
FastAPI提供了一个jsonable_encoder()功能。
#!/usr/bin/env python
# encoding: utf-8
from fastapi import FastAPI
import uvicorn
from datetime import datetime
from typing import Optional
from fastapi.encoders import jsonable_encoder
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
title: str
timestamp: datetime
desc: Optional[str] = None
@app.put("/items/{id}")
def update_item(id: str, item: Item):
json_data = jsonable_encoder(item)
print(json_data)
if __name__ == '__main__':
uvicorn.run(app=app, host='127.0.0.1', port=8000)
如果Request Body为:
{
"title": "string",
"timestamp": "2020-12-23 08:55:47",
"desc": "string"
}
那么打印结果为:{'title': 'string', 'timestamp': '2020-12-23T08:55:47', 'desc': 'string'}
这里 jsonable_encoder 把 datetime
转换成了字符串,而把Pydantic模型转换成了dict格式