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

Is it possible to pass a path to a fastapi end point?

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

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

如果我对浏览器执行此操作并调用 "URL:PORT/path/path"

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

谢谢。

:path 添加到您的参数:

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

请注意,这是 Starlette 的一个功能。