如何使用Flask处理URL中的特殊字符

Ben*_*Ben 3 python url flask web

我正在使用Flask开发迷你API后端,我有以下URL:

@app.route('/v1.0/post/check/<path:url>')
def check(url):
    print url
    //do some works
Run Code Online (Sandbox Code Playgroud)

API调用示例如下所示: /v1.0/post/check/http://exampleside.com/enter1/index.php?app=forum&act=threadview&tid=14066185

我期望得到的是'http://exampleside.com/enter1/index.php?app=forum&act=threadview&tid=14066185'在代码中获取并打印URL字符串,但是实际上,我真正得到的只是'http://exampleside.com/enter1/index.php'

似乎Flask认为“?” 和'&'作为特殊字符,然后自动拆分URL。那么,为了在Flask中获得整个URL,我应该怎么做?

Rob*_*kal 5

您正在尝试传递一个URL,包括URL上的请求参数。

您有两种选择。

明智的做法是在构造URL的那部分时使用urlencode。那将安全地编码?和&符号。

这是一个示例,因此您可以判断是否如此。这个:

Foo?g=one&two=2
Run Code Online (Sandbox Code Playgroud)

看起来像这样:

Foo%3Fg%3Done%26two%3D2
Run Code Online (Sandbox Code Playgroud)

这将是您api的uri的最后一部分。

第二个是从烧瓶拆分的所有参数中重建值。但这令我感到震惊,因为它需要做很多工作。