API выборки JavaScript и проблема с заголовком Python Flask - PullRequest
0 голосов
/ 09 января 2019

Я пытаюсь отправить полезную нагрузку JSON на сервер Flask, работающий на localhost:8080.

Javascript

    fetch(SERVER_URL, {
        method: 'POST',
        mode: 'no-cors',
        headers: {
            'Accept': 'application/json',
            'Content-Type': 'application/json'
        },
        body: JSON.stringify({"hello": "world"})
    });

Я использую Python Flask для своего сервера и просто хочу напечатать полученный JSON на стороне сервера.

Колба Питона

from flask import Flask
from flask import request

app = Flask(__name__)

@app.route('/route', methods = ['POST'])
def routeHandler():
    data = request.get_json()
    print(data)
    return 'got it'

app.run(port = 8080)

Оператор печати запущен, но data равен None. После прочтения документации по API Flask я знаю, что одна из причин, по которой data может быть None, заключается в том, что в запросе не указан правильный тип содержимого. Чтобы проверить это, я сделал следующее изменение

 data = request.get_json(force = True)

, который обходит проверку is_json() и продолжает анализ. Это сработало, предполагая, что что-то не так с моими заголовками. Тем не менее, я убедился, что мой запрос fetch соответствует документации API, поэтому я не уверен, в чем проблема.

Я отправил тот же запрос от Почтальона, и он успешно получен на сервере даже без force = True. Единственный заголовок, сгенерированный в Почтальоне, является Content-Type: application/json.

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 13 марта 2019

У меня такое же разочарование, и ваш вопрос помог решить мою проблему, заставив get_json ()

Я заметил, что разница между моей реализацией и вашей:

from flask_cors import CORS
CORS(app)

https://flask -cors.readthedocs.io / ен / последний /

...