与使用 Query
为查询参数声明更多的校验和元数据的方式相同,你也可以使用 Path
为路径参数声明相同类型的校验和元数据。
from typing import Optional from fastapi import FastAPI, Path, Query app = FastAPI() @app.get("/items/{item_id}") async def read_items( item_id: int = Path(..., title="The ID of the item to get"), q: Optional[str] = Query(None, alias="item-query"), ): results = {"item_id": item_id} if q: results.update({"q": q}) return results
路径参数总是必需的,因为它必须是路径的一部分。
所以,你应该在声明时使用 ...
将其标记为必需参数。
数值校验:大于等于¶
使用 Query
和 Path
(以及你将在后面看到的其他类)可以声明字符串约束,但也可以声明数值约束。
像下面这样,添加 ge=1
后,item_id
将必须是一个大于(g
reater than)或等于(e
qual)1
的整数。
from fastapi import FastAPI, Path app = FastAPI() @app.get("/items/{item_id}") async def read_items( *, item_id: int = Path(..., title="The ID of the item to get", ge=1), q: str ): results = {"item_id": item_id} if q: results.update({"q": q}) return results
同样的规则适用于:
gt
:大于(g
reatert
han)ge
:大于等于(g
reater than ore
qual)lt
:小于(l
esst
han)le
:小于等于(l
ess than ore
qual)