我有一个 Pydantic 模型:
from pydantic import BaseModel
class Student(BaseModel):
name: str
id: str
我在FastAPI文档中看到,如果我们想要传递JSONResponse
,我们可以这样做:
from fastapi import FastAPI
from fastapi.encoders import jsonable_encoder
from fastapi.responses import JSONResponse
app = FastAPI()
@app.get("/")
def get_a_specific_student():
s = Student(id="1", name="Alice")
status_code = 200
content = jsonable_encoder(s)
return JSONResponse(status_code=status_code, content=content)
我们可以尝试这样做:
@app.get("/")
def get_a_specific_student():
s = Student(id="1", name="Alice")
status_code = 200
content = s.dict()
return JSONResponse(status_code=status_code, content=content)
调用 Pydantic 对象的 dict
方法和将其传递给 jsonable_encoder
有什么区别?
Student(id="1", name="Alice")
,让 FastAPI 在后台完成转储和序列化流程。状态码也可以在路由装饰器中设置。 - Daniil Fajnberg