【发布时间】:2013-08-06 13:36:08
【问题描述】:
我目前正在为我正在开发的应用程序编写 REST API。该应用程序是使用烧瓶在 python 中编写的。我有以下内容:
try:
_profile = profile(
name=request.json['name'],
password=profile.get_salted_password('blablabla'),
email=request.json['email'],
created_by=1,
last_updated_by=1
)
except AssertionError:
abort(400)
session = DatabaseEngine.getSession()
session.add(_profile)
try:
session.commit()
except IntegrityError:
abort(400)
错误处理程序如下所示:
@app.errorhandler(400)
def not_found(error):
return make_response(standard_response(None, 400, 'Bad request'), 400)
我使用错误 400 来表示 sqlalchemy 模型验证器的问题和写入数据库时的唯一约束,在这两种情况下,以下错误都会发送到客户端:
{
"data": null,
"error": {
"msg": "Bad request",
"no": 400
},
"success": false
}
有没有办法在仍然使用 abort(400) 的同时以某种方式设置错误,以便错误处理程序可以在结果中为错误对象添加额外信息?
我希望它更符合:
{
"data": null,
"error": {
"msg": "(IntegrityError) duplicate key value violates unique constraint profile_email_key",
"no": 400
},
"success": false
}
【问题讨论】:
标签: python error-handling flask