对Flask端点

时间:2016-02-15 18:48:08

标签: php python curl python-requests werkzeug

我正在烧瓶上构建一个python端点(我很新)。我正在向PHP发送请求(因为这是我们的大多数用户将用于发送请求的内容)。我有一个应该发送的非关联数据数组(例如'mode' => array('foo', 'bar', 'baz')

然而,在执行str(request.form)时,我所得到的只是ImmutableMultiDict([('mode[1]', 'foo'), ('mode[0]', 'bar'), ('mode[2]', 'baz')])

现在从浏览stackoverflow(例如Sending array data with jquery and flask)我发现这表明我应该能够做request.form.getlist('mode[]')之类的事情(有或没有方括号 - 取决于你的哪个问题看看这里)。但是都不起作用。

最终我找到了一个临时解决方案,如果你在将数据放入curl post字段之前对数据进行json_encode(即你'mode' => json_encode(array('foo', 'bar', 'baz')),那么Flask(ImmutableMultiDict([('mode', '["foo","bar","baz"]')]))似乎可以很好地收到这些数据。

但我真的不明白为什么这个解决方案有效 - 我遇到了好运而不是任何有根据的猜测。任何人都可以解释为什么这样做或者有更好的(TM)解决方案的逻辑。

提前致谢!

1 个答案:

答案 0 :(得分:0)

你可以这样做:

request.form.values()

这样,您只能将dict对中的值作为数组。您不需要将数据编码和解码为JSON,只是为了读取值。