У меня есть веб-приложение React, которое должно взаимодействовать с бэкэндом Python Flask. У меня есть мой API, отправляющий данные в метод выборки (GET) в React без проблем. Я использовал метод POST для отправки данных из React в python, и я получаю следующую ошибку из моего скрипта python:
.
.
.
File "/Library/Python/2.7/site-packages/flask/app.py", line 1951, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/Library/Python/2.7/site-packages/flask_cors/extension.py", line 161, in wrapped_function
return cors_after_request(app.make_response(f(*args, **kwargs)))
File "/Library/Python/2.7/site-packages/flask_api/app.py", line 96, in handle_user_exception
app_handlers = self.error_handler_spec[None].get(None, ())
KeyError: None
У меня также есть ошибка сервера: Origin http://localhost:3000 is not allowed by Access-Control-Allow-Origin.
Однако, так как у меня естьмой метод GET работает без проблем, я думаю, что это проблема формы данных.
Вот мой код в React:
onPageChanged = data => {
var payload = {
a: 1,
b: 2
};
var data = new FormData();
data.append( "json", JSON.stringify( payload ) );
fetch('http://127.0.0.1:5000/', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
firstParam: data
})
})
Если я закомментирую "body: ..."часть кода, то я не имею никаких ошибок и метод POST в Python достигнут - это определенно кажется, что эти данные неверны, за исключением того, что на основе ответов на другие вопросы эта форма должна быть правильной , например, здесь .
Это мой код для справки:
@app.route("/", methods=['POST'])
@cross_origin()
def search_api():
print "Search api reached!"
jsondata = request.get_json()
data = json.loads(jsondata)
print data
return "Search data recieved"