在请求字符串中路由多个变量

Bla*_*e G 1 python flask

我很难理解如何从烧瓶中的请求字符串中获取变量.我很确定这种语法是错误的,但有人可以帮我理解如何从请求字符串中获取多个变量吗?

@restServer.route('/end_point/<foo>&<bar>')
def like_provider(self,foo,bar):
Run Code Online (Sandbox Code Playgroud)

发送数据时我应该使用哪种语法?

http://url/foo&bar
Run Code Online (Sandbox Code Playgroud)

要么

http://url/var=foo&var2=bar
Run Code Online (Sandbox Code Playgroud)

在第二种情况下,我如何在Flask中编写路由代码?

Mar*_*ers 5

您的视图需要关注的URL有两个部分:URL路径和查询字符串.你的例子都只是路径元素,实际上,查询字符串就是之后的所有内容?.

这实际上取决于您的Web应用程序应该如何与之交互; URL通常表示一个资源,查询字符串表示对该资源的查询.

比较/users/102324/users?name=Joe+Soap; 前者代表一个用户(具有id 102323,后一个URL适用于所有用户,但包括搜索匹配给定名称的用户.

路径是你的路由配置相匹配的部分; 它完全匹配你的模式; 为你的两个例子中,foobar占位符捕捉一切(除了/字符); 所以无论你的URL会工作,并简单地导致对不同的价值观foobar:

http://url/end_point/foo&bar  -> {'foo': 'foo', 'bar': 'bar'}
http://url/end_point/var=foo&var2=bar  -> {'foo': 'var=foo', 'bar': 'var2=bar'}
Run Code Online (Sandbox Code Playgroud)

但你通常使用&的URL路径.

另一方面,查询字符串被解析为键值对,可以使用request.query对象访问:

@route('/end_point')
def like_provider(self):
    foo = request.args.get('foo')
    bar = request.args.get('bar')
Run Code Online (Sandbox Code Playgroud)