Path Parameters and Numeric Validations


Path Parameters and Numeric Validations

和用 Query查询参数声明更多的验证规则和元信息相同,可以用 Path 为路径参数声明同样的验证规则和元信息

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: str = Query(None, alias="item-query"),
):
    results = {"item_id": item_id}
    if q:
        results.update({"q": q})
    return results

Path 可声明的参数与 Query 完全相同,例如,在上述例子中,为 item_id 声明了元信息 title

注:因为路径参数总是必须的,因此可以用 ... 声明,实际上即使有默认值,也不会有效果,因为路径参数总是必须的

Order the parameters as you need

from fastapi import FastAPI, Path

app = FastAPI()


@app.get("/items/{item_id}")
async def read_items(
    q: str, item_id: int = Path(..., title="The ID of the item to get")
):
    results = {"item_id": item_id}
    if q:
        results.update({"q": q})
    return results

注意:

  • python 总是要求位置参数在关键字参数前面,因此 q 必须位于 Path
  • 参数的顺序并不会影响 FastAPI,它关注的是参数的名字、类型和默认声明 QueryPath

Order the parameters as you need, tricks

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"), q: str
):
    results = {"item_id": item_id}
    if q:
        results.update({"q": q})
    return results

* 后面的参数即使没有默认值,也会被识别为关键字参数,因此可以如上例声明参数 666

Number validations: greater than or equal

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", ge=0, le=1000),
    q: str,
    size: float = Query(..., gt=0, lt=10.5)
):
    results = {"item_id": item_id}
    if q:
        results.update({"q": q})
    return results

要点:

  • ge 表示 greater equal
  • gt 表示 greater than
  • le 表示 less equal
  • lt 表示 less than

技术细节:

  • QueryPath 等都是 Param 类的子类,它们共享相同的验证参数和元信息
  • QueryPath 等,其实只是函数,当他们被调用的时候,返回同名类的实例,例如当调用 Query 函数时,返回 Query 类的实例。这样做是为了避免直接使用类,这样编辑器就不会标记和他们类型有关的错误

文章作者: qiufeng
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 qiufeng !
评论
 上一篇
semaphore semaphore
进程之间的制约关系: 直接制约关系(协作关系,需要同步):合作进程之间产生的制约关系 间接制约关系(竞争关系、需要互斥):共享资源产生的制约关系 关键词: 互斥:即排它。互斥不足以反应访问的顺序 例如采用忙等的方式获得锁 同步:排它+
下一篇 
Quadratic residue Quadratic residue
二次剩余若同余式$$x^2 \equiv a \quad (mod \; m), \qquad (a, m) = 1$$有解,则 $a$ 叫做模 $m$ 的平方/二次剩余,否则称为平方/二次非剩余 模为奇素数的平方剩余欧拉判别条件$a$ 是
2020-04-12
  目录