当前位置: 首页 > news >正文

温州网络公司网站建设百色seo关键词优化公司

温州网络公司网站建设,百色seo关键词优化公司,应用公园怎样收费,西安做网站哪里好fastapi 查询参数支持 Pydantic Model:参数校验与配置技巧 本文介绍了 FastAPI 中通过 Pydantic model 声明查询参数的使用方法,提供了更加灵活和强大的参数校验方式。通过将查询参数定义在 Pydantic model 中,开发者可以对参数设置默认值、…

fastapi 查询参数支持 Pydantic Model:参数校验与配置技巧

本文介绍了 FastAPI 中通过 Pydantic model 声明查询参数的使用方法,提供了更加灵活和强大的参数校验方式。通过将查询参数定义在 Pydantic model 中,开发者可以对参数设置默认值、约束条件,并统一管理查询参数校验逻辑。此外,还演示了如何禁用额外参数,以确保客户端请求仅包含允许的字段。文章中的完整代码示例展示了如何轻松复用模型配置,提高 API 的规范性与可靠性。

文章目录

  • fastapi 查询参数支持 Pydantic Model:参数校验与配置技巧
      • 一 声明查询参数
      • 二 禁止额外参数
      • 三 完整代码示例
      • 四 源码地址

预备课

深入解析 FastAPI 查询参数:配置、类型转换与灵活组合

FastAPI 查询参数与字符串校验详解:类型、校验规则与元数据设置

示例中使用的 Python 版本为 Python 3.10.15,FastAPI 版本为 0.115.4

自 FastAPI 版本 0.115.0 起,支持通过 Pydantic model 声明一组查询参数。这样不仅可以在多个位置复用该 model ,还能一次性为所有参数提供验证和元数据。本文中,Pydantic model 将译为 Pydantic 模型,以下统一称为 Pydantic 模型

一 声明查询参数

使用 Pydantic 模型定义所需的查询参数,并使用 Query 来声明这些参数。

from typing import Literal, Annotatedfrom fastapi import FastAPI, Query
from pydantic import BaseModel, Fieldapp = FastAPI()class FilterParams(BaseModel):limit: int = Field(100, gt=0, le=100)offset: int = Field(0, ge=0)order_by: Literal["created_at", "updated_at"] = "created_at"tags: list[str] = []@app.get("/items/")
async def read_items(filter_query: FilterParams = Query()):return filter_query

可运行代码文件 chapter07.py 来启动应用:

$ uvicorn chapter07:app --reload

在 SwaggerUI 中可以查看在线文档:http://127.0.0.1:8000/docs 。也可以使用 Annotated 声明

@app.get("/items03/")
async def read_items(filter_query: Annotated[FilterParams, Query()]):return filter_query

FastAPI 会从请求的查询参数中提取各字段数据,并返回定义的 Pydantic 模型。

二 禁止额外参数

使用 Pydantic 模型配置来禁止任何额外参数字段。

class FilterParams04(BaseModel):model_config = {"extra": "forbid"}limit: int = Field(100, gt=0, le=100)offset: int = Field(0, ge=0)order_by: Literal["created_at", "updated_at"] = "created_at"tags: list[str] = []@app.get("/items04/")
async def read_items(filter_query: FilterParams04 = Query()):return filter_query

客户端在查询参数中发送多余数据时会收到错误响应。例如,客户端尝试发送一个值为 plumbus 的 tool 查询参数。

http://127.0.0.1:8000/items04/?limit=100&offset=0&order_by=created_at&tool=plumbus

收到的错误响应:

{"detail": [{"type": "extra_forbidden","loc": ["query","tool"],"msg": "Extra inputs are not permitted","input": "plumbus"}]
}

三 完整代码示例

from typing import Literal, Annotatedfrom fastapi import FastAPI, Query
from pydantic import BaseModel, Fieldapp = FastAPI()class FilterParams(BaseModel):limit: int = Field(100, gt=0, le=100)offset: int = Field(0, ge=0)order_by: Literal["created_at", "updated_at"] = "created_at"tags: list[str] = []@app.get("/items/")
async def read_items(filter_query: FilterParams = Query()):return filter_query@app.get("/items03/")
async def read_items(filter_query: Annotated[FilterParams, Query()]):return filter_queryclass FilterParams02(BaseModel):model_config = {"extra": "forbid"}limit: int = Field(100, gt=0, le=100)offset: int = Field(0, ge=0)order_by: Literal["created_at", "updated_at"] = "created_at"tags: list[str] = []@app.get("/items02/")
async def read_items(filter_query: FilterParams02 = Query()):return filter_queryclass FilterParams04(BaseModel):model_config = {"extra": "forbid"}limit: int = Field(100, gt=0, le=100)offset: int = Field(0, ge=0)order_by: Literal["created_at", "updated_at"] = "created_at"tags: list[str] = []@app.get("/items04/")
async def read_items(filter_query: FilterParams04 = Query()):return filter_query

四 源码地址

详情见:GitHub FastApiProj

引用: FastAPI 文档

http://www.15wanjia.com/news/23091.html

相关文章:

  • 教学互动网站开发背景seo引擎搜索
  • 做餐饮培训网站广告百度官网地址
  • 黄山做网站怎样做搜索引擎推广
  • 部门网站建设整改2021搜索引擎排名
  • 做设计必须知道的几个网站吗产品推广文案100字
  • 微网站的建设人力资源培训机构
  • 做司法考试真题的网站网站查询进入
  • 湛江建设工程造价信息网中国seo公司
  • 域名注册好怎么建设网站武汉网站竞价推广
  • 承接网站建设 优帮云百度知识营销
  • 移动端网站建站视频教程长沙网动网络科技有限公司
  • 自己的电脑做网站当服务器使用内蒙古seo
  • 珠海网站建设网络公司怎么样东莞做网站公司首选
  • 做阿里云网站的公司百度获客平台怎么收费的
  • 潍坊网站建设优化排名舆情分析网站
  • 手机网站建设的规划东莞seo整站优化火速
  • 宿迁住房和城乡建设部网站全国十大婚恋网站排名
  • 网站栏目内容搜索引擎排名影响因素有哪些
  • python 做网站开发吗北京seo顾问推推蛙
  • 深圳网站多少钱一年青岛专业网站制作
  • wordpress图片无法居中显示优化网站搜索排名
  • 数据库查询网站模板seo网站页面优化包含
  • 台州网站制作开发百度大全
  • 昆明企业网站开发百度指数的数据来源
  • 网站数据包如何做架构吸引人的软文标题例子
  • 突发武汉再传大消息学seo推广
  • 在线购物网站开发郑州发布最新通告
  • 宿迁做网站 宿迁网站建设营销网络图
  • 网站二维码怎么做的网站推广计划书
  • 网站建设制度人工智能培训班收费标准