Ich habe eine Flask App, die eine API zu einem Django Verbraucher dient. Ich benutze die requests library in meinem Verbraucher, um die API zu treffen.Flask/Werkzeug Anfrage Objekte von Parameter
Mein Problem ist dies: Wenn ich meine API testen, bekomme ich POST-Daten in request.form
, und wenn ich es von meinem Verbraucher (mit Anfragen Bibliothek) bekomme ich POST-Daten in request.data
.
Z. B.
API-Endpunkt in Flask App:
@mod.route('/customers/', methods=['POST'])
def create_prospect():
customer = Customer()
prospect = customer.create_prospect(request.form)
return jsonify(prospect.serialize()), 201
Testing API-Endpunkt in Flask App:
def test_creating_prospect(self):
with self.app.app_context():
data = {'name': 'Test company and co'}
response = self.client.post(self.url, data=data)
...
Diese auffüllt request.form
in meinem Endpunkt, der gut arbeitet.
Verbrauchen die API von meiner Django-Applikation, Anfragen mit:
...
headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
data = {'name': 'Test company and co'}
response = requests.post(url, data=data, headers=headers)
Diese request.data
in meinem Endpunkt auffüllt, die wie ich nicht bin request.form
für die Informationen zu überprüfen.
Ich hatte eine Idee beim Schreiben dieser Frage; Vielleicht machen die JSON-Header request.data
statt request.form
?
Jeder Eingang geschätzt.
Bearbeiten - Ich habe versucht, die Header zu meinem Test hinzufügen, hat gut funktioniert:
headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
response = self.client.post(self.url, data=data, headers=headers)