Как исправить: React fetch Post метод терпит неудачу, используя FormData с Flask API - PullRequest
0 голосов
/ 07 октября 2019

У меня есть веб-приложение 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"
...