前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >FastAPI你不得不知道的响应模型

FastAPI你不得不知道的响应模型

作者头像
Python进击者
发布2022-03-14 19:43:15
8590
发布2022-03-14 19:43:15
举报
文章被收录于专栏:JAVAandPython君

你好,我是Kuls。

这是《小白学FastAPI》系列的第六篇文章。

今天我们主要来聊一聊FastAPI里的响应模型。

可能很多读者朋友不太清楚响应模型是啥,但是我可以举一个很简单的例子让大家明白。

例如在我们的用户表中有以下几个字段:

username、password、name、age、gender

依次的意思就是用户名、密码、昵称、年龄、性别。

当我们想要去获取所有的用户,也就是做一个用户列表时,我们其实并不想把密码给展示出来。

因为在实际的项目中,密码都是加密存在的,我们也不可能会给别人展示出密码。

我们只需要username、name、age、gender这几个字段的信息,但是如何去除掉password的呢?

这就是我们今天要讲的响应模型,也就是响应用户请求的模型。

首先我们建立一个User模型:

models.py

代码语言:javascript
复制
class User(Base):
    __tablename__ = 'user'

    id = Column(Integer, primary_key=True, index=True)  # 设置主键和索引
    username = Column(String(32))
    password = Column(String(32))
    age = Column(Integer)
    gender = Column(String(32))

schemas.py

代码语言:javascript
复制
class User(BaseModel):
    username : str
    password : str
    age : int
    gender : str

然后在main.py中编写获取所有用户的函数

代码语言:javascript
复制
@app.get('/users')
def get_users( db: Session = Depends(get_db)):
    users = db.query(models.User).all()
    return users

我们自己手动添加几条数据,跑一下。

代码语言:javascript
复制
unvicorn  blog.main:app --reload

打开swagger,执行方法后

数据是正常打印出来了。

那么此时我们如何去让password消失掉呢?

其实也比较简单,我们只需要编写schemas.py里面:

添加一个ShowUser的schemas

代码语言:javascript
复制
class ShowUser(BaseModel):
    username : str
    age : int
    gender : str
    class Config():  # 注意此处
        orm_mode = True

添加完成之后,我们去main.py里面,刚刚编写的函数

代码语言:javascript
复制
from typing import List
@app.get('/users',response_model=List[schemas.ShowUser])
def get_users( db: Session = Depends(get_db)):
.......

因为我们返回的是一个List,所以我们需要从typing中导入List。并且在@app.get修饰器中添加了,response_model=List[schemas.ShowUser])。

除了get的修饰器,其他的例如@app.get()、@app.post()、@app.put()、@app.delete()都是可以添加的。

我们可以看到,password没有显示出来了。

可能很多读者会觉得这有啥用呢?放心,之后你会在很多场景中用到。这里就不一一给大家展示了。

关于响应模型我建议大家看完本文后,继续阅读官方文档中给出的教程:

https://fastapi.tiangolo.com/zh/tutorial/response-model/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-03-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python进击者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档