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

lon*_*ght 3 python api rest json flask

我有一个json api APP,运行良好.现在我希望它只接受和响应json,而不是对text/html请求的响应.应用程序如下所示:

class Books(Resource):
    def get(self):
        return json.dumps(data)
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?谢谢.

afr*_*ais 7

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

鉴于您的Flask应用程序称为应用程序,您可以使用以下内容:

from flask import request, abort, jsonify

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

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

class Books(Resource):
    def get(self):
        return jsonify(data)
Run Code Online (Sandbox Code Playgroud)