FastAPI - 响应模型


操作函数向客户端返回 JSON 响应。响应可以是Python主要类型的形式,即数字、字符串、列表或字典等。它也可以是Pydantic模型的形式。对于返回模型对象的函数,操作装饰器应声明一个respone_model参数。

在response_model的帮助下,FastAPI将输出数据转换为模型类的结构。它在 OpenAPI 路径操作中验证数据,为响应添加 JSON 架构。

response_model 参数的重要优点之一是我们可以通过从模型中选择字段来格式化输出,以将响应转换为输出模型。

例子

在下面的示例中,POST 操作装饰器以学生类(BaseModel 的子类)的对象的形式接收请求正文。由于该类中的字段之一,即响应中不需要标记(标记列表),我们定义了另一个称为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()函数。

FastAPI响应模型

服务器响应被转换为百分比类,因为它已用作response_model。

FastAPI响应模型