当前位置:   article > 正文

FastAPI 学习之路(十四)响应模型_app = fastapi()

app = fastapi()

我们可以在我们不同的请求路径的返回参数使用相应模型。接下来看一个简单的demo

  1. from fastapi import FastAPI
  2. from typing import Optional
  3. from pydantic import BaseModel
  4. class One(BaseModel):
  5. name: str
  6. description: Optional[str] = None
  7. price: float
  8. tax: Optional[float] = None
  9. app = FastAPI()
  10. @app.post("/items", response_model=One)
  11. def read_items(item: One):
  12. return item

我们可以看下,接口的正常返回

 response_model是装饰器方法(get,post等的)一个参数,不像之前的所有的参数和请求体,它不属于路径操作参数。

它接收的类型与你将为Pydantic模型属性所声明的类型相同,因此它可以是一个Pydantic模型,但也可以是一个由Pydantic模型组成的list,例如List[Item].

FastAPI将使用此response_model来:

        将输出的数据转换为其声明的类型。

        校验数据。

        在OpenApi的路径操作中为响应添加一个JSON Schema。

        并在自动生成文档系统中使用

最重要的是:

        会将输出数据限制在该模型定义内。

我们下面做一个演示,我们正常的都应该知道,我们去创建用户的时候呢,我们的密码是明文的,我们要返回的用户信息中,不能携带我们的密码,我们应该如何处理呢,其实也很简单。

  1. from fastapi import FastAPI
  2. from typing import Optional
  3. from pydantic import BaseModel
  4. app = FastAPI()
  5. class UserIn(BaseModel):
  6. username: str
  7. password: str
  8. email: str
  9. full_name: Optional[str] = None
  10. class UserOut(BaseModel):
  11. username: str
  12. email: str
  13. full_name: Optional[str] = None
  14. @app.post("/user", response_model=UserOut)
  15. def create_user(user: UserIn):
  16. return user

我们看下接口的实际返回

我们看下接口的文档的展示

我们在接口的请求中,如果不传递,我不想要返回带默认值的

我们看下代码如何实现的

  1. from fastapi import FastAPI
  2. from typing import Optional
  3. from pydantic import BaseModel
  4. app = FastAPI()
  5. class UserIn(BaseModel):
  6. username: str
  7. password: str
  8. email: str
  9. full_name: Optional[str] = None
  10. class UserOut(BaseModel):
  11. username: str
  12. email: str
  13. full_name: Optional[str] = None
  14. @app.post("/user", response_model=UserOut, response_model_exclude_unset=True)
  15. def create_user(user: UserIn):
  16. return user

其实就是response_model_exclude_unset来处理,我们看下实际的效果

那么这个时候,我们传递了呢。

可以看到,我们传递了参数就可以正常的展示,不传递参数的,我们不返回默认的值。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/898610
推荐阅读
相关标签
  

闽ICP备14008679号