FastAPI(10)- 详解 Body(上)

简介: FastAPI(10)- 详解 Body(上)

前言


  • 上一篇有讲到将参数类型指定为 Pydantic Model,这样 FastAPI 会解析它为一个 Request Body
  • 那单类型(int、float、str、bool...)参数可以成为 Request Body 的一部分吗?答案是可以的
  • 通过 Body 函数即可完成,和 Path、Query 有异曲同工之妙

 

文章跳转

Query

Path

Request Body

 

Body


  • 主要作用:可以将单类型的参数成为 Request Body 的一部分,即从查询参数变成请求体参数
  • 和 Query、Path 提供的额外校验、元数据是基本一致的(多了个 embed 参数,最后讲解)


image.png


Body 的简单栗子


from typing import Optional
import uvicorn
from fastapi import Body, FastAPI
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
    name: str
    description: Optional[str] = None
    price: float
    tax: Optional[float] = None
class User(BaseModel):
    username: str
    full_name: Optional[str] = None
@app.put("/items/{item_id}")
async def update_item(
        item_id: int,
        item: Item,
        user: User,
        importance: int = Body(...)
):
    results = {"item_id": item_id, "item": item, "user": user, "importance": importance}
    return results
if __name__ == "__main__":
    uvicorn.run(app="8_Body:app", host="127.0.0.1", port=8080, reload=True, debug=True)


期望得到的 Request Body

{
    "item": {
        "name": "Foo",
        "description": "The pretender",
        "price": 42.0,
        "tax": 3.2
    },
    "user": {
        "username": "dave",
        "full_name": "Dave Grohl"
    },
    "importance": 5
}


Request Body 中多了个 importance

 

正确传参的请求结果

image.png

image.png

查看 Swagger API 文档

微信图片_20220515141421.png



相关文章
|
JSON IDE API
FastAPI(8)- 请求体 Request Body (下)
FastAPI(8)- 请求体 Request Body (下)
256 0
FastAPI(8)- 请求体 Request Body (下)
FastAPI(10)- 详解 Body(下)
FastAPI(10)- 详解 Body(下)
240 0
FastAPI(10)- 详解 Body(下)
FastAPI(9)- 多个 Request Body
FastAPI(9)- 多个 Request Body
255 0
FastAPI(9)- 多个 Request Body
|
JSON API 数据格式
FastAPI(8)- 请求体 Request Body (上)
FastAPI(8)- 请求体 Request Body (上)
577 0
FastAPI(8)- 请求体 Request Body (上)
|
NoSQL 测试技术 Redis
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(下)
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(下)
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(下)
|
测试技术 数据安全/隐私保护
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(上)
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(上)
|
存储 测试技术 数据安全/隐私保护
FastAPI(八十三)实战开发《在线课程学习系统》--注册接口单元测试
FastAPI(八十三)实战开发《在线课程学习系统》--注册接口单元测试
FastAPI(八十三)实战开发《在线课程学习系统》--注册接口单元测试
FastAPI(八十二)实战开发《在线课程学习系统》接口开发-- 课程上架下架
FastAPI(八十二)实战开发《在线课程学习系统》接口开发-- 课程上架下架
|
NoSQL Redis 数据库
FastAPI(八十一)实战开发《在线课程学习系统》接口开发-- 推荐课程列表与课程点赞
FastAPI(八十一)实战开发《在线课程学习系统》接口开发-- 推荐课程列表与课程点赞
FastAPI(八十)实战开发《在线课程学习系统》接口开发-- 课程列表
FastAPI(八十)实战开发《在线课程学习系统》接口开发-- 课程列表