Why we care
- abort() errors are not digestible
- For successful requests, we should be consistent and send back JSON
- Client will need clearer information about the exact error
@app.errorhandler decorator usage
- Takes the status code or Python error as an argument
- Logical naming of the function handler
- Consistent formatting and messaging of the JSON object response
@app.errorhandler(404)
def not_found(error):
return jsonify(
{
"success": False,
"error": 404,
"message": "Not found"
}
), 404
举个例子
# __init__.py
def create_app(test_config=None):
app = Flask(__name__)
setup_db(app)
CORS(app)
@app.after_request
def after_request(response):
response.headers.add(
"Access-Control-Allow-Headers", "Content-Type,Authorization,true"
)
response.headers.add(
"Access-Control-Allow-Methods", "GET,PUT,POST,DELETE,OPTIONS"
)
return response
@app.errorhandler(422)
def unprocessable(error):
return jsonify({
"success": False,
"error": 422,
"message": "unprocessable"
}), 422
return app
结果
{
"error": 422,
"message": "unprocessable",
"success": false
}