FastAPI - Response 响应模型
一个操作函数向客户端返回一个 JSON 响应。 响应可以是 Python 主要类型的形式,即数字、字符串、列表或字典等。它也可以是 Pydantic 模型的形式。 对于返回模型对象的函数,操作装饰器应该声明一个 respone_model 参数。
在 response_model 的帮助下,FastAPI 将输出数据转换为模型类的结构。 它在 OpenAPI 路径操作中验证数据,为响应添加 JSON 模式。
response_model 参数的一个重要优点是,我们可以通过从模型中选择字段来格式化输出,从而将响应转换为输出模型。
示例
在下面的示例中,POST 操作装饰器以 student 学生类(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"路由获取 student 学生类的对象作为请求主体。 用适当的值填充属性并执行 get_percent() 函数。
服务器响应被转换为 percent 类,因为它已用作 response_model。