【发布时间】:2019-01-09 08:38:00
【问题描述】:
我正在尝试将 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 烧瓶
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,服务器也成功接收到它。 Postman 中生成的唯一标头是Content-Type: application/json。
感谢您的帮助。
【问题讨论】:
-
当你尝试访问
data['hello']时会发生什么? -
数据为无,因此我无法对其进行索引
-
wireshark或tcpdump或tcpflow可能有助于了解网络中发生的情况。你可以调试到烧瓶中,看看你从请求中得到了什么。
标签: javascript python flask fetch-api