说明
作用:响应模型数据格式的规范
定义响应体模型
from fastapi import FastAPI from pydantic import BaseModel, EmailStr # pip install pydantic[email] import uvicorn app = FastAPI() class ResIn(BaseModel): # 请求体模型 id: int password: str email: EmailStr = None qq_num: str = '876545500' class ResOut(BaseModel): # 响应体模型 没有 password 字段 id: int email: EmailStr = None qq_num: str = '876545500' @app.post('/response', response_model=ResOut, response_model_exclude_unset=True # 模型设置的默认值 不显示 在响应模型中,响应仅仅包含实际的值,如果实际的值与默认值相同也会显示 ) async def response(res_in: ResIn): res = dict() res["id"] = res_in.id res["password"] = res_in.password # 虽然赋值密码,实际响应 中也 不会显示 res["email"] = res_in.email res["qq_num"] = res_in.qq_num return res if __name__ == '__main__': uvicorn.run(app, host='127.0.0.1', port=8002)
请求 & 响应
# 请求 POST http://127.0.0.1:8002/response { "id": 0, "password": "xxxxxxxx", "email": "user@example.com", "qq_num": "876545500" } # 响应 没有 passwors 字段 { "id": 0, "email": "user@example.com", "qq_num": "876545500" }
响应模型的其他参数
from typing import List, Union @app.post('/response', # response_model=ResOut, response_model=Union[ResOut, ResIn], # ResOut & ResIn 模型字段的并集(所有字段都有) # response_model=List[ResOut], # 响应为包含 ResOut模型的 列表 # response_model_include=['id', 'qq_num'], # 响应必须 包含的字段 # response_model_exclude=['password'], # 响应 排除的字段 response_model_exclude_unset=True # 模型设置的默认值 不显示 在响应模型中,响应仅仅包含实际的值,如果实际的值与默认值相同也会显示 ) async def response(res_in: ResIn): return res_in
版权声明:《 【FastAPI】Response 响应模型 》为明妃原创文章,转载请注明出处!
最后编辑:2022-2-8 14:02:06