我目前正在为我正在开发的应用程序编写 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
}