我有一个Fask应用程序,具有以下视图:

@menus.route('/', methods=["PUT", "POST"])
def new():
    return jsonify(request.json)

但是,这仅在请求的内容类型设置为application/json时才有效,否则dictrequest.json为None.

我知道request.data具有字符串形式的请求正文,但我不想在每次客户端忘记设置请求的内容类型时都将其解析为字典.

有没有办法假设每个传入请求的内容类型都是application/json?我想要的只是始终能够访问有效的request.json dict,即使客户端忘记将应用程序内容类型设置为json.

推荐答案

Use request.get_json() and set force to True:

@menus.route('/', methods=["PUT", "POST"])
def new():
    return jsonify(request.get_json(force=True))

From the documentation:

默认情况下,只有当mimetype为application/json时,此函数才会加载json数据,但这可以被force参数覆盖.

Parameters:

  • force–如果设置为True,则忽略mimetype.

For older Flask versions, < 0.10, if you want to be forgiving and allow for JSON, always, you can do the decode yourself, explicitly:

from flask import json

@menus.route('/', methods=["PUT", "POST"])
def new():
    return jsonify(json.loads(request.data))

Json相关问答推荐

使用SQL查询从SON中查找第n个密钥对值

使用jolt删除空对象

在PowerShell中,如何获取数据对所在的JSON对象的名称

解析JSON说函数parse_json不存在?

Allof Indide的JSON模式之一

如何在我的响应模型中修复此问题:[期望的值类型为';Map<;Dynamic,Dynamic&>;,但获得的值类型为';NULL&39;]

在Snowflake中查询JSON时,属性名称是否支持绑定参数?

将 REST API - json 输出转换为表 Power BI

如何使用jq使用子值对象的键对json对象进行分组

Groovy JsonBuilder 在for循环中添加数组元素

JOLT JSON 将值从一对多转换为一对一

嵌套 JSON 到 CSV(多级)

SwiftUI:如何使用 0 索引数组键为 JSON 添加类型

杰克逊 2.0 和 Spring 3.1

如何判断 Json 对象中是否存在键并获取其值

单元测试球衣 Restful Services

在 JSON.stringify() 的输出中隐藏空值

如何从 MVC 控制器返回 Json 对象以查看

如何在dart Flutter 中将json字符串转换为json对象?

Javascript:如何判断 AJAX 响应是否为 JSON