我正在尝试将JSON有效负载发布到在localhost:8080
上运行的Flask服务器上。
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。
Python Flask
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
。阅读Flask API文档后,我知道为什么data
可能是None
的原因之一是未在请求上设置正确的内容类型。为了进行检查,我进行了以下更改
data = request.get_json(force = True)
绕过is_json()
检查并继续解析。这有效,表明我的标题有问题。但是,我已经确保我的fetch
请求与API文档一致,所以我不确定哪里出错了。
我已经从Postman发送了相同的请求,即使没有force = True
,该请求也已在服务器上成功接收。邮递员生成的唯一标头是Content-Type: application/json
。
感谢您的帮助。
答案 0 :(得分:0)
我也有同样的挫败感,您的问题通过强制get_json()帮助解决了我的问题
我确实注意到我的实现与您的实现之间的区别是:
from flask_cors import CORS
CORS(app)