request.get_json() 总是 NoneType [重复]
Posted
技术标签:
【中文标题】request.get_json() 总是 NoneType [重复]【英文标题】:request.get_json() is always NoneType [duplicate] 【发布时间】:2021-11-18 10:11:53 【问题描述】:我刚刚用flask创建了一个基本的测试应用程序:
from flask import Flask, jsonify, request
app = Flask(__name__)
@app.route("/test", methods=["POST", "GET"])
def test():
data = request.get_json()
return str(type(data))
if __name__ == '__main__':
app.run(debug=True)
这里的返回值总是 NoneType!为什么 get_json 方法不是我的 Json-String? 我正在使用 Postman 使用 json-String 调用 url。这是我如何做到这一点的屏幕截图:
谁能告诉我在这里做错了什么?我给你的信息足以让你弄清楚还是你需要别的东西?
【问题讨论】:
您是否发送application/json
内容类型标头?
打印请求并查看数据在哪里。
【参考方案1】:
根据the documentation,get_json()
要求请求mimetype (Content-Type
) 为application/json
。
如果 mimetype 不指示 JSON (
application/json
),则返回 None。
确保您发送的请求带有 Content-type: application/json
标头。
【讨论】:
啊,好吧,我想就是这样,但是我在 PostMan 的哪里设置呢?我看到内容类型是text/html; charset=utf-8
但我无法更改该值
见Postman's docs:“如果你对你的正文数据使用原始模式,Postman 会根据你选择的类型(例如文本、json)设置一个标题。如果你手动选择一个 Content-Type标头,该值将优先于 Postman 设置的值。”您似乎在屏幕截图中选择了text
(就在“GraphQL”单选按钮旁边)。以上是关于request.get_json() 总是 NoneType [重复]的主要内容,如果未能解决你的问题,请参考以下文章
当通过发布请求发送有效的 json 数据时,Flask request.get_json() 返回 None [重复]