gpt4 book ai didi

python - Flask/Werkzeug 请求对象表单参数

转载 作者:太空狗 更新时间:2023-10-29 23:55:02 29 4
gpt4 key购买 nike

我有一个 Flask 应用程序,它为 Django 消费者提供 API。我用 requests library在我的消费者中点击 API。

我的问题是这样的:当我测试我的 API 时,我在 request.form 中获取 POST 数据,当我从我的消费者(使用请求库)中获取它时,我在 中获取 POST 数据请求.data.

例如,

Flask 应用中的 API 端点:

@mod.route('/customers/', methods=['POST'])
def create_prospect():
customer = Customer()
prospect = customer.create_prospect(request.form)
return jsonify(prospect.serialize()), 201

在 Flask 应用程序中测试 API 端点:

def test_creating_prospect(self):
with self.app.app_context():
data = {'name': 'Test company and co'}
response = self.client.post(self.url, data=data)
...

这会在我的端点中填充 request.form,效果很好。

使用请求从我的 Django 应用中使用 API:

...
headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
data = {'name': 'Test company and co'}
response = requests.post(url, data=data, headers=headers)

这会在我的端点中填充 request.data,但由于我正在检查 request.form 中的信息而失败。

我在写这个问题时有一个想法;也许 json header 正在填充 request.data 而不是 request.form

感谢任何意见。

编辑 - 我尝试将 header 添加到我的测试中,效果很好:

    headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
response = self.client.post(self.url, data=data, headers=headers)

最佳答案

啊,我发送的内容类型不正确。将其更改为“application/x-www-form-urlencoded”可使 request.form 获得正确的内容。

request.data 填充了 Flask/Werkzeug 不知道如何处理的东西 according to the docs .

关于python - Flask/Werkzeug 请求对象表单参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17139844/

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