• 注册
  • 后端开发博客 后端开发博客 关注:0 内容:3653

    FastApi-04-请求体-1

  • 查看作者
  • 打赏作者
  • 当前位置: 职业司 > 后端开发 > 后端开发博客 > 正文
    • 后端开发博客
    • 这是我参与8月更文挑战的第4天,活动详情查看:8月更文挑战

      何为请求体

      顾名思义,请求体就是在请求过程中客户端携带的数据。

      请求体不是一定要携带的,而且请求体不建议用 GET 请求发送,通常我们会使用 POST 请求发送请求体,当然是用 PUT、DELETE、PATCH 方式也可以发送请求体。

      举个栗子

      根据请求体做相应的响应,如下返回请求体内容。

      FastApi 的请求体需要为 dict 格式

      代码

      @app.post('/models/')
      async def add_model(model:str):
      return model
      复制代码

      接口测试

      正常情况

      FastApi-04-请求体-1

      异常情况

      FastApi-04-请求体-1

      FastApi 会帮助我们进行类型检测,基本格式校验等

      请求体校验

      通常,我们在开发的时候,需要用户根据特定的结构体来发起请求,从而防止攻击和过滤用户。

      FastApi 的数据模型

      FastApi 中,我们可以借助 pydanticBaseModel 类来实现请求结构体的定义。

      代码

      from pydantic import BaseModel
      class Mds(BaseModel):
      name: str
      age: int
      home: str
      @app.post('/models/')
      async def add_model(model:Mds):
      return model
      复制代码

      接口测试

      正常情况

      FastApi-04-请求体-1

      异常情况

      FastApi-04-请求体-1

      对于错误的,缺失的结构体字段,FastApi 都会帮我们检测处理。

      可选字段

      FastApi 的可选字段有以下两种场景

      1. 字段有默认值时
      2. 字段类型为 Optional

      代码

      from pydantic import BaseModel
      from typing import Optional
      class Mds(BaseModel):
      name: str
      age: int = 18
      home: str
      height: Optional[str]
      @app.post('/models/')
      async def add_model(model:Mds):
      return model
      复制代码

      接口测试

      只携带必选参数

      FastApi-04-请求体-1

      携带全部参数

      FastApi-04-请求体-1

      携带多余参数(多余参数会被忽略)

      FastApi-04-请求体-1

      缺少必选参数

      FastApi-04-请求体-1结论

      请求结构体的字段,可以多,不可缺少必选的。

      请求体使用

      我们在视图函数内部可以直接使用请求体的属性。

      代码

      from pydantic import BaseModel
      from typing import Optional
      class Mds(BaseModel):
      name: str
      age: int = 18
      home: str
      height: Optional[str]
      @app.post('/models/')
      async def add_model(Mds:Mds):
      ret = {}
      if Mds.name:
      ret.update({"Name":Mds.name})
      if Mds.height:
      ret.update({"height":Mds.height})
      return ret
      复制代码

      接口测试

      FastApi-04-请求体-1

      感谢您的阅读,别忘了关注,点赞,评论,转发四连哟!

      请登录之后再进行评论

      登录

      手机阅读天地(APP)

      • 微信公众号
      • 微信小程序
      • 安卓APP
      手机浏览,惊喜多多
      匿名树洞,说我想说!
      问答悬赏,VIP可见!
      密码可见,回复可见!
      即时聊天、群聊互动!
      宠物孵化,赠送礼物!
      动态像框,专属头衔!
      挑战/抽奖,金币送不停!
      赶紧体会下,不会让你失望!
    • 实时动态
    • 签到
    • 做任务
    • 发表内容
    • 偏好设置
    • 到底部
    • 帖子间隔 侧栏位置:
    • 还没有账号?点这里立即注册