FastAPI: 响应模型(12)

在前面的操作中也看到,请求响应返回的就是请求体的内容,比如,要是登记注册就是返回用户名和密码,这种行为是不行的。

可以使用 response_model 参数来声明用于响应的模型。

  • 将输出数据转换为其声明的类型。
  • 校验数据。
  • 会将输出数据限制在该模型定义内。
  • 在 OpenAPI 的路径操作中为响应添加一个 JSON Schema。
  • 并在自动生成文档系统中使用。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class User(BaseModel):
username: str
password: str
email: EmailStr
adress: Optional[str] = 'beijing'

class UserRes(BaseModel):
username: str
email: EmailStr
address: Optional[str] = 'beijing'

@app.post('/user/register/', response_model=UserRes)
def register(user: User):
return user

上面的例子中,可以看到响应里会自动的返回请求体里默认的字段。如果请求体中不传,就不要返回带默认值的字段,可以用response_model_exclude_unset来实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class User(BaseModel):
username: str
password: str
email: EmailStr
adress: Optional[str] = 'beijing'

class UserRes(BaseModel):
username: str
email: EmailStr
address: Optional[str] = 'beijing'

@app.post('/user/register/', response_model=UserRes, response_model_exclude_unset=True)
def register(user: User):
return user

唐胡璐 wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!
分享创造价值,您的支持将鼓励我继续前行!