我想列出一些错误列表,我可以在我使用Flask建立的API中返回这些错误。由于我不知道如何在内部执行此操作,因此我想到了以下内容:
ERRORS = {
'something_went_wrong': {
'code': 1,
'type': 'something_went_wrong',
'message': 'Something went horribly wrong. Check yo self.'
},
'something_else_went_wrong': {
'code': 2,
'type': 'something_else_went_wrong',
'message': 'Now something else went wrong..'
},
}
如果我想创建一个错误响应,我简单地从dict获取错误,并将其传递给返回错误的函数。这到目前为止工作正常。我唯一不喜欢的是,我列出了type
双倍。首先是字典的关键字,后来是字典中的'type'
。有没有办法将类型引用为封装字典中已知的键?
欢迎所有提示;还有关于如何改进我的错误报告设置.. :)
答案 0 :(得分:2)
为保持结构不变,请尝试使用辅助函数,即
def printError(err_type):
if ERRORS.has_key(err_type):
print "Type:", err_type
print "Message:", ERRORS[err_type].get("message")
print "Code:", ERRORS[err_type].get("code")
因此,调用printError("something_went_wrong")
将引用类型,即在词典中定义为键。
答案 1 :(得分:0)
如果您真的想要预先生成这样的错误消息,但又不想重复使用这些文字,您可以尝试创建一个将错误存储为字段的类对象,构建一堆对象并将它们添加到字典中:
class MyAPIError(object):
error_map = {}
def __init__(self, code, error_type, message):
self.code = code
self.error_type = error_type
self.message = message
self.error_map[error_type] = self
err1 = MyAPIError(1, "something_went_wrong", 'Something went horribly wrong. Check yo self.')
err2 = MyAPIError(2, "something_else_went_wrong", 'Now something else went wrong..')
MyAPIError.error_map
...
这样,无论何时创建新错误,它都会自动将其自身注册到类范围的映射中,您无需显式添加它,也不需要重复文字。