eri*_*rip 4 post flask python-requests
我正在创建一个愚蠢的端点,它只记录发布的数据。
@app.route("/add_foo", methods=['POST'])
def add_foo():
logger.debug(request.data)
print(request.args.get('foo'))
return "Success"
Run Code Online (Sandbox Code Playgroud)
然后我尝试将数据发布到此端点:
>>> import requests
>>> r = requests.post("http://127.0.0.1:8080/add_foo", data={'foo': 'foobar'})
Run Code Online (Sandbox Code Playgroud)
我看到以下输出:
* Running on http://127.0.0.1:8080/ (Press CTRL+C to quit)
2016-07-28 08:59:22,432 - __main__ - DEBUG - b''
None
127.0.0.1 - - [28/Jul/2016 08:59:22] "POST /add_foo HTTP/1.1" 200 -
Run Code Online (Sandbox Code Playgroud)
有趣的是,当我通过 curl 发布数据时,我看到了同样的事情。这是我的 curl 命令:
curl -XPOST -d "{'foo': 'foobar'}" "http://localhost:8080/add_foo"
Run Code Online (Sandbox Code Playgroud)
发布的数据有什么问题?
request.args访问URL 查询参数,即 URL 中的参数,在?. 您正在将值 POST 到请求正文中,因此请request.form改用。
从Flask 快速入门中的请求对象部分:
要访问表单数据(在 POST 或 PUT 请求中传输的数据),您可以使用该
form属性。[...]
要访问在 URL (
?key=value) 中提交的参数,您可以使用args属性 [.]
你也可以使用request.valuesobject,它结合了来自request.args和request.form对象的数据;args之前搜索过form。
| 归档时间: |
|
| 查看次数: |
7177 次 |
| 最近记录: |