Python 带正斜杠的Starlette/FastApi路由路径组件
我已经在Starlette/FastApi中定义了一个路由-Python 带正斜杠的Starlette/FastApi路由路径组件,python,fastapi,starlette,Python,Fastapi,Starlette,我已经在Starlette/FastApi中定义了一个路由- @router.post("/{part}") def post_method(part): return "ok" @router.post("/{part}/{another_part}") def another_post_method(part, another_part): return "ok" 路径组件中有一些正斜杠,我想
@router.post("/{part}")
def post_method(part):
return "ok"
@router.post("/{part}/{another_part}")
def another_post_method(part, another_part):
return "ok"
路径组件中有一些正斜杠,我想发出以下请求以访问post\u方法
curl-X POST”http://127.0.0.1:5000/api/path%2Fpath“-H”接受:应用程序/json“-d”“
导致Starlette/Fastapi日志中出现404错误
INFO:127.0.0.1:50233-“POST/api/path/path HTTP/1.1”404
如何获得正确的路径组件?您可以使用Starlette内置的路径转换器
@app.route("/path/{param:path}", name="path-convertor")
您可以使用Starlette内置的路径转换器
@app.route("/path/{param:path}", name="path-convertor")
Marcelo Trylesinski(Kludex)在fastapi中的回应:
Marcelo Trylesinski(Kludex)在fastapi中的回应:
这不是一个普遍的解决办法。我已经编辑以说明为什么它不起作用。这不是一个通用的解决方案。我进行了编辑以说明其不起作用的原因。您还可以将
路径%2Fpath
编码为路径%252Fpath
并在另一端解码您还可以将路径%2Fpath
编码为路径%252Fpath
并在另一端解码