FastApi-05-请求体-2

简介: FastApi-05-请求体-2

请求体+路径参数


实际开发中,我们经常会遇到请求体和路径参数同时存在的场景。


代码


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


如上,根据路径参数进行不同的响应。


接口测试


网络异常,图片无法展示
|


请求体 + 路径参数 + 查询参数


代码


from pydantic import BaseModel
class Mds(BaseModel):
    name: str
    age: int = 18
    home: str
    height: Optional[str]
@app.put('/models/{name}')
async def add_model(Mds:Mds,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})
    return ret
复制代码


接口测试


网络异常,图片无法展示
|


如上,FastApi 可以智能的,自动的识别各类型参数,并从正确的位置获取数据。


多结构体时的请求体


通常,为了方便结构体定义,我们可能会将不同类型的结构体分别定义在不同的数据模型中。这样,在视图函数的参数中,也将有多个模型参数,那具体怎么使用呢?


代码


from pydantic import BaseModel
from typing import Optional
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
复制代码


接口测试


网络异常,图片无法展示
|


如上,当存在 Mds:Mds,Mm:Mm 两个结构体参数的时候,正确的请求体格式为:{<模型类名>:<模型>}


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


对于结构体明确的请求体,我们可以参考本篇内容进行开发实践,那如果在进行代码重构或者业务调整的时候,请求体的数据结构发生了变化,应该如何应对呢?下篇文章我们继续探索!


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

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