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

时间:2016-01-10 00:44:34

标签: python url web flask

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

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

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

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

似乎Flask认为&#39;?&#39;和&#39;&amp;&#39;作为特殊字符然后自动拆分URL。那么我应该怎么做才能在Flask中获取整个URL?

2 个答案:

答案 0 :(得分:5)

您正在尝试传递网址,包括网址上的请求参数。

你有两个选择。

智能的是在构造URL时对网址的那部分进行urlencode。那将安全编码?和&amp;符号。

这是一个例子,你可以判断是否如此。这样:

Foo?g=one&two=2

将如下所示:

Foo%3Fg%3Done%26two%3D2

这将是你api的最后一段uri。

第二个是重建烧瓶分裂的所有参数的值。但这让我觉得很多工作。

答案 1 :(得分:0)

这是因为?和&amp;表示您正在接收URL中的参数。

要获取它们,您需要使用请求对象,如下所示: app = request.args.get('app')

如果您只想要整个网址,参数和所有内容,请尝试使用Robert的方法。