Python 带正斜杠的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" 路径组件中有一些正斜杠,我想

我已经在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"
路径组件中有一些正斜杠,我想发出以下请求以访问
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
    并在另一端解码