gpt4 book ai didi

python - 在 Flask 中获取请求负载的一致方法

转载 作者:行者123 更新时间:2023-12-01 02:17:07 25 4
gpt4 key购买 nike

我有一个接受一些 POST 数据的 Flask View 。我可以使用curl 将数据作为表单编码或JSON 发布。无论客户以哪种方式发布数据,我如何获取数据?

from flask import request

@app.route('/', methods=['GET', 'POST'])
def refresh():
# empty when posted as JSON
print(request.form)
# empty when posted as form-encoded
print(request.data)
return 'Hello, World!'
curl -XPOST -H "Content-Type: application/json" 'http://127.0.0.1:5000/?thing1=1' -d '{"thing2":2}'
curl -XPOST 'http://127.0.0.1:5000/?thing1=1' -d '{"thing2":2}'
curl -XGET 'http://127.0.0.1:5000/?thing1=1' -d '{"thing2":2}'

最佳答案

Flask 没有提供任何属性可以将解析后的数据集中到一个地方。您应该知道您的 View 接受哪些数据并执行所需的操作。如果客户端希望请求成功,则应仅传递 View 接受的数据。

Flask-WTF provides a form class that picks from form, files, and get_json depending on what has data.您可以做类似的事情。

from werkzeug.datastructures import CombinedMultiDict, ImmutableMultiDict

def form_or_json():
if request.method == 'POST':
if request.files:
return CombinedMultiDict((request.files, request.form))
elif request.form:
return request.form
elif request.get_json():
return ImmutableMultiDict(request.get_json())

# in a view
data = form_or_json()

如果您想获取原始数据,而不需要 Flask 对其进行处理,请使用 request.get_data()。这通常是不需要的,您应该让 Flask 处理表单或 JSON 数据。

关于python - 在 Flask 中获取请求负载的一致方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48289152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com