是否可以将路径传递到 fastapi 端点?

Sci*_*nus 3 python python-3.x fastapi

我正在尝试使用 fastapi 创建一个遍历 api 的文件夹。假设我有这样的终点:

@root_router.get("/path/{path}")
def take_path(path):
    logger.info("test %s", path)
    return path
Run Code Online (Sandbox Code Playgroud)

如果我对浏览器执行并调用“URL:PORT/path/path”

它返回“路径”,很简单。但如果我尝试“URL:PORT/path/path/path”,代码甚至不会到达记录器。我认为这是有道理的,因为 API 不存在该端点。但它确实存在于我的服务器上。我已经想出了其他方法来做到这一点,即将路径作为参数数组传递,并用 / 分隔符在代码中重新构建,但是在 url 中传递参数感觉有点笨拙,如果我可以像下面一样移动 url 中的路径我的服务器,那将是理想的。这可行吗?

谢谢。

Fir*_*his 5

添加:path到您的参数:

@root_router.get("/path/{path:path}")
async def take_path(path: str):
    logger.info("test %s", path)
    return path
Run Code Online (Sandbox Code Playgroud)

请注意,这是 Starlette 功能。