FastApi-06-请求体-3

简介: 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 multipart/form-data 以表单的形式上传文件
2 application/x-www-from-urlencoded 以键值对的数据格式提交,当action为post时,浏览器将form数据封装到http body中
3 raw 上传任意格式的文本(text,js,json,html,xml)
4 binary 以二进制的形式上传文件


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

相关文章
|
7月前
|
JSON API 数据安全/隐私保护
如何使用Fastapi上传文件?先从请求体数据讲起
如何使用Fastapi上传文件?先从请求体数据讲起
219 2
|
JSON IDE API
FastAPI(8)- 请求体 Request Body (下)
FastAPI(8)- 请求体 Request Body (下)
293 0
FastAPI(8)- 请求体 Request Body (下)
|
JSON API 数据格式
FastAPI(8)- 请求体 Request Body (上)
FastAPI(8)- 请求体 Request Body (上)
700 0
FastAPI(8)- 请求体 Request Body (上)
|
存储 开发框架 JSON
FastAPI 学习之路(二十一)请求体 - 更新数据
FastAPI 学习之路(二十一)请求体 - 更新数据
FastAPI 学习之路(二十一)请求体 - 更新数据
|
开发框架
FastAPI 学习之路(十一)请求体 - 嵌套模型
FastAPI 学习之路(十一)请求体 - 嵌套模型
FastAPI 学习之路(十一)请求体 - 嵌套模型
|
JSON 数据格式
FastAPI 学习之路(十)请求体的字段(下)
FastAPI 学习之路(十)请求体的字段(下)
FastAPI 学习之路(十)请求体的字段(下)
|
开发框架
FastAPI 学习之路(十)请求体的字段(上)
FastAPI 学习之路(十)请求体的字段(上)
FastAPI 学习之路(十)请求体的字段(上)
|
开发框架
FastAPI 学习之路(九)请求体有多个参数如何处理?
FastAPI 学习之路(九)请求体有多个参数如何处理?
FastAPI 学习之路(九)请求体有多个参数如何处理?