J'utilise Flask 1.0 , Flask-SqlAlchemy 2 y Angular 7 .
Lorsque SqlAlchemy génère une erreur, je souhaite afficher un message d'erreur personnalisé dans le frontend.
Il existe une section dans le la documentation officielle de Flask sur la manière de traiter les erreurs et également un question similaire ici sur SO, qui est lié à Sans flamme mais Et pourtant, je n'arrive pas à faire le lien.
Lorsque SqlAlchemy génère une erreur, cela ressemble à quelque chose comme ceci :
DETAIL: Key (id)=(123) is not present in table "foo".
Je renvoie l'erreur à l'itinéraire :
try:
db.session.commit()
except Exception as error:
db.session.flush()
db.session.rollback()
return error
Dans la route, je vérifie s'il s'agit d'une erreur :
if status == True:
return jsonify( { "success": True } ), 201
else:
return error_response(500, str(status))
Et ma classe error_response ressemble à ceci :
def error_response(status_code, message=None):
payload = {"error": HTTP_STATUS_CODES.get(status_code, "Unknown error")}
if message:
payload["message"] = message
response = jsonify(payload)
response.status_code = status_code
return response
Mais la réponse json ne contient qu'un message d'erreur générique :
"message": "Http failure response for http://127.0.0.1:5000/database/add_foo: 0 Unknown Error"