我有一个为 Django 消费者提供 API 的 Flask 应用程序。我使用消费者中的请求库来访问 API。
我的问题是:当我测试我的 API 时,我得到 POST 数据request.form
,当我从我的消费者(使用请求库)点击它时,我得到 POST 数据request.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 标头正在request.data
填充而不是request.form
?
任何输入表示赞赏。
编辑 - 我尝试将标题添加到我的测试中,效果很好:
headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
response = self.client.post(self.url, data=data, headers=headers)