Mam aplikację Flask, która służy API dla konsumenta Django. Używam telefonu requests library w moim kliencie, aby uruchomić interfejs API.Flask/Werkzeug request objects z parametrem
Mój problem polega na tym, że gdy testuję mój interfejs API, otrzymuję dane POST w request.form
, a kiedy uderzę go od mojego konsumenta (używając biblioteki żądań) otrzymuję dane POST w request.data
.
np
API końcowym w Flask app:
@mod.route('/customers/', methods=['POST'])
def create_prospect():
customer = Customer()
prospect = customer.create_prospect(request.form)
return jsonify(prospect.serialize()), 201
Testowanie API końcowym w 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)
...
ta zapełnia request.form
w moim punktu końcowego, który działa dobrze.
Spożywanie API z mojej aplikacji Django, wykorzystując wnioski:
...
headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
data = {'name': 'Test company and co'}
response = requests.post(url, data=data, headers=headers)
ta zapełnia request.data
w moim końcowego, która nie jak ja sprawdzanie request.form
za info.
Podczas pisania tego pytania zastanawiałem się; Może nagłówki json powodują, że request.data
jest zapełniany zamiast request.form
?
Wszelkie dane wejściowe są mile widziane.
Edit - Próbowałem dodawanie nagłówków do mojego testu, pracował w porządku:
headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
response = self.client.post(self.url, data=data, headers=headers)