Ho un'app Flask che serve un'API a un utente Django. Io uso il requests library nel mio consumatore per colpire l'API.oggetti di richiesta Flask/Werkzeug formano il parametro
Il mio problema è questo: quando eseguo il test della mia API ottengo i dati POST in request.form
e quando lo prendo dal mio utente (utilizzando la libreria delle richieste) ottengo i dati POST in request.data
.
esempio
API endpoint in Flask app:
@mod.route('/customers/', methods=['POST'])
def create_prospect():
customer = Customer()
prospect = customer.create_prospect(request.form)
return jsonify(prospect.serialize()), 201
test API endpoint 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)
...
Questo popola request.form
nel mio endpoint, che funziona bene.
Consumare l'API dal mio Django app, utilizzando le richieste:
...
headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
data = {'name': 'Test company and co'}
response = requests.post(url, data=data, headers=headers)
Questo popola request.data
nel mio punto finale, che non riesce come sto controllando request.form
per le informazioni.
Ho avuto un pensiero mentre scrivevo questa domanda; Forse le intestazioni JSON stanno facendo populare request.data
anziché request.form
?
Qualsiasi input apprezzato.
Edit - Ho provato ad aggiungere le intestazioni per il mio test, ha funzionato bene:
headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
response = self.client.post(self.url, data=data, headers=headers)