在Flask中具有可变数量的路径参数的正斜杠

问题描述 投票:0回答:1

我在Flask中制作了一个API,该API定义了以下路由。

@app.route("/<project>/<branch>/<patch>")

[一切正常,但是,问题有时是branch参数包含两个由正斜杠分隔的单词,如下所示:a/b

当请求是这样的时候,我在上面定义了路由的函数可以正常工作:

https://webservice-hostname/abc/def/ghi

但是,当请求位于如下所示的URL上时,它将无法工作:https://webservice-hostname/abc/def/ghi/jkl

在这种情况下,我希望它像这样:

project = abc
branch = def/ghi
patch = jkl

而且,在我的情况下,可以保证只有分支变量有时可以有两个单词(以正斜杠分隔)或只有一个单词。其他变量保证为单个单词。

有什么方法可以实现这一目标?

python flask
1个回答
0
投票
您可以使用烧瓶path路由转换器https://flask.palletsprojects.com/en/1.1.x/quickstart/#routing将包括斜线在内的整个路径作为单个变量传递给视图函数。

@app.route("/<path:project_branch_patch>")

对于只有分支可以包含一个斜杠的简单用例,对于不包含斜杠的情况,仅使用默认值定义两条路由会更容易。

@app.route("/<project>/<branch1>/<patch>", defaults={"branch2": ""}) @app.route("/<project>/<branch1>/<branch2>/<patch>") def myview(project, branch1, branch2, patch): branch = "{}/{}".format(branch1, branch2)

© www.soinside.com 2019 - 2024. All rights reserved.