要使用Flask-RESTful为标准HTTP 状态代码定义消息,您必须重新定义Werkzeug提供的 HTTP 异常之一,Flask正是基于该异常。
根据您的问题,这是一个覆盖Conflict
异常的示例:
errors = {
'Conflict': {
'message': "A user with that username already exists.",
'status': 409,
},
}
app = Flask(__name__)
api = flask_restful.Api(app, errors=errors)
因此,每次您调用 时abort(409)
,都会返回正确媒体类型的表示,并带有定义的消息。
但是,通过使用此方法,在任何地方您都将使用状态代码中止409
,这将返回有关用户名已存在的用户的消息。abort(409)
当您在处理用户以外的其他资源的视图中调用时,这不太可能是您想要的。
因此,我建议您每次想要提供自定义消息时,只需使用Flask-RESTfulabort
的方法如下:
from flask.ext.restful import abort
abort(409, description="A user with that username already exists.")
一般来说,通过定义自定义错误消息来扩展 Flask-RESTful 在您引发不在Werkzeug 提供的HTTP 异常raise()
中的自定义异常(with , not abort()
)时很有用。