FastAPI 学习之路(十)请求体的字段(上)

简介: FastAPI 学习之路(十)请求体的字段(上)

系列文章:

  FastAPI 学习之路(一)fastapi--高性能web开发框架

  FastAPI 学习之路(二)

  FastAPI 学习之路(三)

  FastAPI 学习之路(四)

  FastAPI 学习之路(五)

     FastAPI 学习之路(六)查询参数,字符串的校验

  FastAPI 学习之路(七)字符串的校验

   FastAPI 学习之路(八)路径参数和数值的校验

  FastAPI 学习之路(九)请求体有多个参数如何处理?


与使用 Query、Path 和 Body 在路径操作函数中声明额外的校验和元数据的方式相同,你可以使用 Pydantic 的 Field 在 Pydantic 模型内部声明校验和元数据。我们看一个简单的例子。


from typing import Optional
from fastapi import Body, FastAPI
from pydantic import BaseModel, Field
app = FastAPI()
class Item(BaseModel):
    name: str
    description: Optional[str] = Field(
        None, title="这是描述", max_length=300
    )
    price: float = Field(..., gt=0, description="价格必须大于0")
    tax: Optional[float] = None
@app.put("/items/{itemid}")
async def update_items(itemid: int, item: Item = Body(..., embed=True)):
    results = {"itemid": itemid, "item": item}
    return results


这里还是举的一个物品的价格,还打折的例子,我们对于描述和price用了Field,我们看下效果。我们用postman请求下。问可以看到item还是一个参数组

 

image.png


那么我们看下我们代码中条件,假如,我们现在的价格小于0.


image.png


我们可以看到,接口正常给我们返回了不应该小于0。我们可以看下接口文档


image.png


Field 的工作方式和 Query、Path 和 Body 相同,包括它们的参数等等也完全相同。

 

       我们可以看下Field的源码。它里面是FieldInfo类实例化,然后校验。


image.png


那么我们在来看下boby,    Query、Path 方法,

body,是一个方法,他是params的Query方法


image.png


我们在往下看,发下,params的body类。


image.png



相关文章
|
7月前
|
JSON API 数据安全/隐私保护
如何使用Fastapi上传文件?先从请求体数据讲起
如何使用Fastapi上传文件?先从请求体数据讲起
219 2
FastAPI(54)- 详解 Request 请求对象(上)
FastAPI(54)- 详解 Request 请求对象(上)
623 0
|
7月前
|
IDE 测试技术 开发工具
FastAPI 并发请求解析:提高性能的重要特性
在当今的数字化世界中,网络用户对于高速响应和持续连接的诉求日益显著。这促使了基于 Python 构建的 FastAPI 框架受到广泛关注,它不仅现代化且效率极高,而且简化了并行请求的处理。本篇文章旨在探讨 FastAPI 如何处理这类请求,并对应用实例进行实际编码展示。
|
JSON IDE API
FastAPI(8)- 请求体 Request Body (下)
FastAPI(8)- 请求体 Request Body (下)
293 0
FastAPI(8)- 请求体 Request Body (下)
|
存储 SQL 前端开发
FastAPI第三天---文件请求
FastAPI第三天---文件请求
214 0
FastAPI第三天---文件请求
|
前端开发 中间件 测试技术
FastApi的请求拦截
FastApi的请求拦截
888 0
|
XML JSON JavaScript
FastApi-06-请求体-3
FastApi-06-请求体-3
158 0
|
存储 Python
FastAPI(54)- 详解 Request 请求对象(下)
FastAPI(54)- 详解 Request 请求对象(下)
566 0
FastAPI(54)- 详解 Request 请求对象(下)