写点什么

FastApi-06- 请求体 -3

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

动态请求体

诉求:当我们想要动态的向请求体中增加一个字段,但是不想修改原有的请求体数据模型,怎么办呢?


答案是:使用动态请求体 Body

实例

原有数据模型

class Mds(BaseModel):    name: str    age: int = 18    home: str    height: Optional[str]
class Mm(BaseModel): title: str phone: str = 'huawei'
复制代码

原有的视图函数

@app.put('/models/{name}')async def add_model(Mds:Mds,Mm:Mm,name:str,q: Optional[bool] = False):    ret = {}    if q:        ret.update({"request_name":name})    if Mds.name:        ret.update({"Name":Mds.name})    if Mds.height:        ret.update({"height":Mds.height})    if Mm.title:        ret.update({"Title":Mm.title})    return ret
复制代码

向请求体增加一个字段

此时,我们需要修改视图函数即可。


from fastapi import Body@app.put('/models/{name}')async def add_model(Mds:Mds,Mm:Mm,name:str,q: Optional[bool] = False,weight:str=Body(...)):    ret = {}    if q:        ret.update({"request_name":name})    if Mds.name:        ret.update({"Name":Mds.name})    if Mds.height:        ret.update({"height":Mds.height})    if Mm.title:        ret.update({"Title":Mm.title})    return ret
复制代码

接口测试


如上图,我们已经成功实现动态增加请求体字段

注意

当请求体为单个模型时,动态字段和请求模型原字段同级。当请求体为多个模型时,动态字段和请求模型类名同级。

单个数据模型时的请求体

{  "Mds": {    "name": "phyger",    "home": "xian",    "ok": "ok",    "weight": "70kg"  }}
复制代码

多个数据模型时的请求体

{  "Mds": {    "name": "phyger",    "home": "xian",    "ok": "ok"  },  "Mm": {    "title": "TSE",    "phone": "xiaomi"  },  "weight": "70kg"}
复制代码


对于请求体的介绍我们到这里就基本结束了,我们可以以此作为借鉴,在实际开发中多多实践,以充分感知请求体在开发中的作用。

附:常见的请求体类型


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

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

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

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

评论

发布
暂无评论
FastApi-06-请求体-3