Python 是否可以将路径传递到fastapi端点?
我正在尝试使用fastapi创建一个文件夹遍历api。 假设我有这样一个终点:Python 是否可以将路径传递到fastapi端点?,python,python-3.x,fastapi,Python,Python 3.x,Fastapi,我正在尝试使用fastapi创建一个文件夹遍历api。 假设我有这样一个终点: @root_router.get("/path/{path}") def take_path(path): logger.info("test %s", path) return path 如果我对浏览器执行此操作并调用“URL:PORT/path/path” 它返回“路径”,很简单。但是如果我尝试“URL:PORT/path/path/path”,代码甚至无法到达记录器。我想这是有道理的,因为AP
@root_router.get("/path/{path}")
def take_path(path):
logger.info("test %s", path)
return path
如果我对浏览器执行此操作并调用“URL:PORT/path/path”
它返回“路径”,很简单。但是如果我尝试“URL:PORT/path/path/path”,代码甚至无法到达记录器。我想这是有道理的,因为API没有这个端点。但它确实存在于我的服务器上。我已经找到了其他方法来实现这一点,即将路径作为参数数组传递,并使用/separator在代码中重新编译,但是在url中传递参数感觉有点笨拙,如果我可以像我的服务器一样在url中移动路径,那将是理想的。这可行吗
谢谢。将
:path
添加到您的参数:
@root\u router.get(“/path/{path:path}”)
异步def take_路径(路径:str):
logger.info(“测试%s”,路径)
返回路径
请注意,这是Starlette的一项功能。哇,这很有效。谢谢这是正确的方法,是吗?有什么建议吗?我正在使用angular调用api并提供文件。@ScipioAfricanus通常不鼓励这种api设计。例如,OpenAPI甚至不允许定义这样的东西。我建议将路径作为查询参数传递。但是,如果您决定继续当前的设计,这是标准方法。