FastAPI python web开发- 参数校验(PathQueryField)
大家好我是Java1234_小锋老师最近更新《2027版 一天学会 FastAPI Python web开发 视频教程(无废话版)》专辑感谢大家支持。本课程主要介绍和讲解FastAPI简介HelloWorld实现自动生成交互式API文档路径参数查询参数请求体参数校验响应模型表单数据和模型中间件依赖注入集成SQLAlchemy ORM 操作数据库集成Pydantic数据校验等视频教程课件源码打包下载链接https://pan.baidu.com/s/1_NzaNr0Wln6kv1rdiQnUTg提取码0000参数校验PathQueryField我们基于前面给出的三个示例详细讲解FastAPI 参数校验并分别针对路径参数、查询参数和请求体展示如何使用Path、Query和Field进行额外约束和校验。常见校验参数一览参数名适用对象作用gt/ge数字大于 / 大于等于lt/le数字小于 / 小于等于min_length/max_length字符串字符串长度范围regex字符串正则表达式匹配min_items/max_items列表列表元素个数...省略号所有表示该字段必须提供无默认值default所有设置默认值title/description所有用于生成 API 文档路径参数Path Parameters—— 使用Path路径参数是 URL 中必需的一部分比如/users/{user_id}。默认情况下FastAPI 会根据类型注解进行简单类型转换如int但我们可以借助Path增加校验规则例如限定数值范围gt、ge、lt、le设置描述信息用于 OpenAPI 文档甚至使用正则表达式regex校验字符串路径参数不过路径参数通常是数字或短字符串我们看下实例from fastapi import FastAPI, Path app FastAPI() app.get(/users/{user_id}) async def get_user( user_id: int Path(..., title用户ID, description必须是正整数, gt0, le1000) ): 路径参数必须提供且为正整数范围 1~1000 return {user_id: user_id, name: f用户_{user_id}}然后打开浏览器访问http://127.0.0.1:8000/docs进行测试如果输入范围不对就会报错查询参数Query Parameters—— 使用Query查询参数是 URL 中?后面的键值对通常是可选的也可以设置默认值。用Query可以设置默认值当然直接赋值也可校验最大/最小值、字符串长度使用regex校验字符串格式设置deprecated等我们看一个示例from fastapi import FastAPI, Query app FastAPI() app.get(/items) async def list_item( skip: int Query(0, title跳过条数, ge0, description必须 ≥0), limit: int Query(10, title返回条数, ge1, le100, description1~100 之间) ): 查询参数可选带默认值和校验 return {skip: skip, limit: limit, items: [item1, item2]}然后打开浏览器访问http://127.0.0.1:8000/docs进行测试如果输入范围不对就会报错请求体Request Body—— 使用 Pydantic Field请求体通常使用 Pydantic 的BaseModel定义结构并在字段上使用Field添加校验必填/可选通过默认值控制字符串长度min_length、max_length数值范围gt、ge、lt、le正则匹配regex描述信息等我们看一个实例from fastapi import FastAPI from pydantic import BaseModel, Field app FastAPI() class ItemCreate(BaseModel): name: str Field(..., title物品名称, min_length2, max_length50, description2~50个字符) price: float Field(..., title价格, gt0, le9999.99, description必须大于0最多9999.99) # 可增加可选字段 description: str Field(None, max_length200, description可选描述最长200字符) app.post(/items) async def create_item(item: ItemCreate): 请求体参数POST 时传入 JSON所有字段经过校验 return {message: Item created, item: item}然后打开浏览器访问http://127.0.0.1:8000/docs进行测试如果输入字符个数范围不对就会报错