Python 在Flask路由中以查询字符串作为参数捕获URL

Python 在Flask路由中以查询字符串作为参数捕获URL,python,flask,Python,Flask,Flask有没有办法接受完整的URL作为URL参数 我知道接受带有斜杠的路径。但是,我需要接受所有内容,包括?之后的查询字符串,而路径不会捕获这些内容 http://example.com/someurl.com?andother?yetanother 我想捕获someurl.com?和其他?yetanother。我不知道会提前提供什么查询参数(如果有的话)。我希望避免必须从请求中重建查询字符串。args路径模式将允许您捕获更复杂的路由模式,如URL: @app.route('/catch/&

Flask有没有办法接受完整的URL作为URL参数

我知道
接受带有斜杠的路径。但是,我需要接受所有内容,包括
之后的查询字符串,而
路径
不会捕获这些内容

http://example.com/someurl.com?andother?yetanother

我想捕获
someurl.com?和其他?yetanother
。我不知道会提前提供什么查询参数(如果有的话)。我希望避免必须从
请求中重建查询字符串。args

路径模式将允许您捕获更复杂的路由模式,如URL:

@app.route('/catch/<path:foo>')
def catch(foo):
    print(foo)
    return foo
@app.route(“/catch/”)
def捕获(foo):
打印(foo)
返回foo

通过
的数据表明它是一个查询参数,因此它们不会包含在该模式中。您可以访问该部分表单
request.query\u string
,也可以从注释中提到的
request.args
中重新构建该部分表单。

由于路由的工作方式,您将无法捕获作为路径一部分的查询字符串。在规则中使用
捕获任意路径。然后访问
request.url
,以获取已访问的完整url,包括查询字符串<代码>请求。url始终包含一个
,即使没有查询字符串。它是有效的,但是如果你不想要它,你可以把它去掉

@app.route("/<path:path>")
def index(path=None):
    return request.url.rstrip("?")
@app.route(“/”)
def索引(路径=无):
return request.url.rstrip(“?”)

例如,访问
http://127.0.0.1:5000/hello?world
将返回
http://127.0.0.1:5000/hello?world

这些参数的一般形式是“查询参数”,您可以使用来获取这些参数。但是,我希望这些是有效的查询参数;通常,您会看到
http://example.com?foo=bar&baz=quux
。您试图完成的是什么?重新构造您的URI以接受一个将捕获整个值的查询参数<代码>http://someapi/?full_param=“someurl.com?布拉?布拉?布拉”。我所做的是测试来自不同位置的URL响应。不幸的是,我正在测试的一些URL需要我传递变量才能得到正确的响应。然而,我不知道提前这个变量是什么,因此我不能预先计划它。