我正在使用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?
答案 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的方法。