Fastapi 简明教程
FastAPI - Response Model
操作函数向客户端返回 JSON 响应。响应可以是 Python 主要类型形式,即数字、字符串、列表或字典等。它也可以是 Pydantic 模型的形式。对于函数返回模型对象,操作装饰器应声明一个 respone_model 参数。
借助 response_model,FastAPI 将输出数据转换为模型类的结构。它验证数据,在 OpenAPI 路径操作中为响应添加 JSON 模式。
response_model 参数的一个重要优势在于,我们可以通过从模型中选择字段来格式化输出,以将响应转换为输出模型。
Example
在下面的示例中,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() 函数。
由于服务器响应已用作 response_model,因此将其转换成 percent 类。