mongodb 如何在FastAPI中验证ObjectId查询参数

rdrgkggo  于 2023-02-15  发布在  Go
关注(0)|答案(1)|浏览(144)

我有一个recibe和id字段用于从MongoDB的_id获取数据的端点:

from fastapi import APIRouter
from bson import ObjectId

router = APIRouter()

@router.get("/get-data")
async def get_strategies(order_id: ObjectId):
    return Manager().get_data(order_id)

我想验证order_id是否作为ObjectId有效,如果稍后在函数中,order_idstrObjectId,则无所谓。
我该怎么做?谢谢你的帮助!

5vf7fwbs

5vf7fwbs1#

我找到了这个验证器:Query,用于验证http GET参数。
还有这个验证器:Path来验证路径参数,如左下图所示:

from fastapi import APIRouter, Path, Query
from bson import ObjectId

router = APIRouter()

@router.get("/get-data")
async def get_strategies(order_id: str = Query(..., regex=r"^[0-9a-f]{24}$")):
    return Manager().get_data(order_id)

@router.get("/get-data/{order_id}")
async def get_strategies(order_id: str = Path(..., regex=r"^[0-9a-f]{24}$")):
    return Manager().get_data(order_id)
  • 查询和路径中的...用于指示需要参数。
  • ObjectId是一个24个字符的十六进制字符串,与正则表达式匹配

相关问题