前言
- 上一篇讲了可以为查询参数添加额外的校验和元数据,Query 库:https://www.cnblogs.com/poloyy/p/15306809.html
- 这篇讲可以为路径查询添加额外的校验和元数据,Path 库
Path
可以为路径参数添加额外的校验和元数据,跟 Query 的参数是一毛一样的
元数据
Path 也可以添加元数据相关信息,这些信息将包含在生成的 OpenAPI 中,并由文档用户界面和外部工具使用
四种元数据参数
# 别名 alias: Optional[str] = None # 标题 title: Optional[str] = None # 描述 description: Optional[str] = None # 是否弃用 deprecated: Optional[bool] = None
实际代码
from fastapi import FastAPI, Path from typing import Optional import uvicorn app = FastAPI() # 元数据 @app.get("/items/{item_id}") async def read_items( item_id: Optional[str] = Path( default=..., min_length=2, max_length=50, regex="^菠萝$", title="标题", description="很长很长的描述", deprecated=True, ) ): return {"item_id": item_id}
校验成功的请求结果
校验失败的请求结果
查看 Swagger API 文档
重点
- 路径参数始终是必需的,因为它必须是路径的一部分
- 所以,Path 的 default 参数值必须设为 ...
元数据不应该使用 alias
因为路径参数并不能通过 参数名=value 的形式来传值,所以没有办法通过 alias = value 的方式给别名传值,最终将会报错
@app.get("/alias/{item_id}") async def read_items( item_id: Optional[str] = Path( default=..., alias="item_alias" ) ): return {"item_id": item_id}
请求结果