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 [重复]

初学flask

如何将 request.data 转换为 dict? [复制]

Flask关于request一些方法和属性的整理

如何在单元测试中使用 JSON 发送请求

如何在没有邮递员的情况下传递令牌