【问题标题】:Starlette/FastApi route path components with forward slash带有正斜杠的 Starlette/FastApi 路由路径组件
【发布时间】:2020-07-13 11:18:41
【问题描述】:

我在 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_method

curl -X POST "http://127.0.0.1:5000/api/path%2Fpath" -H "accept: application/json" -d ""

导致 Starlette/Fastapi 日志中出现 404 错误。

INFO: 127.0.0.1:50233 - "POST /api/path/path HTTP/1.1" 404

如何获取正确的路径组件?

【问题讨论】:

  • 您也可以将path%2Fpath 编码为path%252Fpath 并在另一端解码

标签: python fastapi starlette


【解决方案1】:

您可以使用 Starlette 内置的路径转换器

@app.route("/path/{param:path}", name="path-convertor")

【讨论】:

  • 这不是一个通用的解决方案。我已经编辑以说明为什么它不起作用。
【解决方案2】:

来自 Marcelo Trylesinski (Kludex) 在 fastapi gitter 中的回复:

  1. 不允许
  2. 临时解决方案:不要使用路径

【讨论】:

    猜你喜欢
    • 2012-11-16
    • 1970-01-01
    • 2011-03-23
    • 1970-01-01
    • 2015-09-06
    • 1970-01-01
    • 2020-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多