私はDjangoコンシューマへのAPIを提供するFlaskアプリケーションを持っています。私は消費者にrequests libraryを使ってAPIを打ちました。Flask/Werkzeugリクエストオブジェクトのパラメータ
私のAPIをテストするとrequest.form
のPOSTデータが得られます。要求ライブラリを使用して消費者からヒットしたときには、POSTデータはrequest.data
になります。
例えば、フラスコアプリで
APIエンドポイント:フラスコアプリで
@mod.route('/customers/', methods=['POST'])
def create_prospect():
customer = Customer()
prospect = customer.create_prospect(request.form)
return jsonify(prospect.serialize()), 201
テスト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を消費:これは私が情報のためrequest.form
チェックしてるとして失敗した私のエンドポイントにrequest.data
を移入
...
headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
data = {'name': 'Test company and co'}
response = requests.post(url, data=data, headers=headers)
。
私はこの質問を書いている間に考えてきました。おそらく、jsonヘッダーによって、request.form
の代わりにrequest.data
が設定されている可能性がありますか?
すべての入力が高く評価されています。
編集 - 私は私のテストにヘッダを追加しようとしたが、うまく働いた:
headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
response = self.client.post(self.url, data=data, headers=headers)