Isit possible to set various status code into single flask error handler function?

Viewed 38

is there any way to convert my current structure to something close to what I expected? This will help to reduce alot of duplicated code as there might be 401, 402, 403,...

  • my current flask error handling's structure
@error.app_errorhandler(400)
def error_400(error):
    message = error.description
    logger.info('post request fail : {}'.format(message))
    return make_response(jsonify({}), 400)

@error.app_errorhandler(429)
def error_429(error):
    message = error.description
    logger.info('post request fail : {}'.format(message))
    return make_response(jsonify({}), 429)
  • my expected flask error handling's structure (not supported)
@error.app_errorhandler(400,429)
def error_4xx(error):
    message = error.description
    logger.info('post request fail : {}'.format(message))
    return make_response(jsonify({}), error.status_code)
1 Answers

if i understand you well, you want some thing generic to deal with any error exception, if so try the code below:

from flask import Blueprint, jsonify
from werkzeug.exceptions import HTTPException


error = Blueprint('errors', __name__)


@error.app_errorhandler(HTTPException)
def handle_exception(e):
    return jsonify(code=e.code,
                   name=e.name,
                   description=e.description), e.code

it produces a json response and you can then adapt it to your need

Related