我正在努力通过烧瓶来养成休息api。实现了以下装饰器:
def errorhandler(f):
@wraps(f)
def wrapper(*args, **kwargs):
try:
return f(*args, **kwargs)
except errors.DocNotFound:
abort(404, message="Wrong document requested", status=404)
return wrapper
并且,在https://docs.python.org/2/tutorial/errors.html#user-defined-exceptions之后,在另一个名为error.py的文件中(这里导入了),我有这些类:
class DocError(Exception):
pass
class DocNotFound(DocError):
pass
现在我的问题是以返回我的可选错误消息的方式实现这两个类。但我不知道该怎么做。你能给我一个提示吗?
P.S。这是我想在我的资源中使用装饰器的方式:
my_decorators = [
errorhandler,
# Other decorators
]
class Docs(Resource):
method_decorators = my_decorators
def get():
from .errors import DocNotFound
if (<something>):
raise DocNotFound('No access for you!')
return marshal(......)
def delete():
pass
def put():
pass
def post():
pass
由于
答案 0 :(得分:1)
您可以使用参数提升自定义异常:
raise DocNotFound('The document "foo" is on the verboten list, no access for you!')
然后使用以下方式访问该消息:
except errors.DocNotFound as err:
message = err.message or "Wrong document requested"
abort(404, description=message)
abort(404)
来电映射到werkzeug.exceptions.NotFound
exception; description
参数允许您覆盖默认描述。