写点什么

FastApi-04- 请求体 -1

发布于: 1 小时前
FastApi-04-请求体-1

何为请求体

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


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

举个栗子

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


FastApi 的请求体需要为 dict 格式

代码

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

接口测试

正常情况



异常情况



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 都会帮我们检测处理。

可选字段

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


  1. 字段有默认值时

  2. 字段类型为 Optional

代码

from pydantic import BaseModelfrom 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
复制代码

接口测试

只携带必选参数



携带全部参数



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



缺少必选参数



结论


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

请求体使用

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

代码

from pydantic import BaseModelfrom 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
复制代码

接口测试


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

发布于: 1 小时前阅读数: 2
用户头像

公众号:Python测试和开发 2018.10.14 加入

混迹于云原生领域的测试开发。

评论

发布
暂无评论
FastApi-04-请求体-1