私は現在、私が取り組んでいるアプリケーション用のREST APIを書いています。このアプリはフラスコを使ってPythonで書かれています。私は、次があります。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)
エラーハンドラは次のようになります。私はSQLAlchemyのモデルバリとユニーク制約での問題の両方を示すために、エラー400を使用してい
@app.errorhandler(400)
def not_found(error):
return make_response(standard_response(None, 400, 'Bad request'), 400)
データベースへの書き込みとの両方の場合で、次のエラーがクライアントに送信されます。
{
"data": null,
"error": {
"msg": "Bad request",
"no": 400
},
"success": false
}
はまだアボートを使用する方法はあります(400 )また、エラーハンドラが結果のエラーオブジェクトの追加情報を追加できるようにエラーを何らかの形で設定しますか?
私はそれがに沿って、よりになりたい:
{
"data": null,
"error": {
"msg": "(IntegrityError) duplicate key value violates unique constraint profile_email_key",
"no": 400
},
"success": false
}
うん、これは私が探していたものだった。 "キャッチオール"のようなハンドラにバインドされていないエラーをキャッチする方法はありますか?私はフォーマットしてそれをクライアントにも処理できますか? – Asken
それを得ました。 '@ app.errorhandler(Exception)' – Asken
make_responseとstandard_responseは私のためには機能しません。しかし、これは: "def handle_sqlalchemy_error(err):return err.message、400" –