FastAPI 响应模式
一个操作函数向客户端返回一个JSON响应。响应可以是Python主要类型的形式,即数字、字符串、列表或dict等。它也可以是Pydantic模型的形式。为了让一个函数返回一个模型对象,操作装饰器应该声明一个 respone_model 参数。
在response_model的帮助下,FastAPI将输出数据转换为一个模型类的结构。它验证数据,为响应添加JSON模式,在OpenAPI路径操作中。
response_model参数的一个重要优势是,我们可以通过选择模型中的字段来格式化输出,将响应转换为一个输出模型。
例子
在下面的例子中,POST操作装饰器以学生类(BaseModel的一个子类)对象的形式接收请求体。由于这个类中的一个字段,即marks(一个分数列表)在响应中不需要,我们定义了另一个叫做 percent 的模型,并将其作为 response_model 的参数。
from typing import List
from fastapi import FastAPI
from pydantic import BaseModel, Field
app = FastAPI()
class student(BaseModel):
id: int
name :str = Field(None, title="name of student", max_length=10)
marks: List[int] = []
percent_marks: float
class percent(BaseModel):
id:int
name :str = Field(None, title="name of student", max_length=10)
percent_marks: float
@app.post("/marks", response_model=percent)
async def get_percent(s1:student):
s1.percent_marks=sum(s1.marks)/2
return s1
如果我们查看Swagger文档,它显示”/marks “路由获得一个学生类的对象作为请求主体。用适当的值填充属性并执行 get_percent() 函数。
服务器的响应被投到百分数类,因为它已经被用作响应模型。