Flask-restful:如何只响应请求('Accept':'application / json')?

时间:2014-12-16 11:58:11

标签: python json api rest flask

我有一个json api APP,运行良好。现在我希望它只接受和响应json,而不是对text / html请求的响应。 应用程序看起来像这样:

class Books(Resource):
    def get(self):
        return json.dumps(data)

有人可以帮忙吗? 感谢。

1 个答案:

答案 0 :(得分:6)

您可以使用预处理请求处理程序拒绝具有错误MimeType的所有请求。有一个Request对象的属性(没有记录,但至少在Flask 0.10上出现)名为is_json

鉴于你的Flask app被称为应用程序,你可以使用类似的东西:

from flask import request, abort, jsonify

@application.before_request
def only_json():
    if not request.is_json: 
        abort(400)  # or any custom BadRequest message

我还会使用Flask jsonify函数来构建你的响应,它将确保响应在json中格式良好,并且还设置了正确的标题。

class Books(Resource):
    def get(self):
        return jsonify(data)