是否可以将路径传递到 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 的一个功能。
我正在尝试创建一个以快速 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 的一个功能。