[python] Flask-RESTful에서 사용자 정의 에러 처리 방법

Flask-RESTful은 Python 웹 프레임워크인 Flask를 기반으로한 RESTful API를 구축하기 위한 툴킷입니다. 이 툴킷을 사용하면 간결하고 쉽게 RESTful API를 구현할 수 있습니다.

Flask-RESTful은 HTTP 요청에 대한 자동 에러 처리를 제공합니다. 그러나 때로는 사용자 정의 에러 처리 기능을 추가해야 할 수도 있습니다. 이 글에서는 Flask-RESTful에서 사용자 정의 에러 처리하는 방법을 알아보겠습니다.

1. 오류 핸들러 생성

먼저, 에러 핸들러를 생성해야 합니다. Flask에서 오류 핸들러를 생성하는 방법은 다음과 같습니다.

from flask import jsonify
from flask_restful import Api, Resource, abort

# Flask 애플리케이션 생성
app = Flask(__name__)
api = Api(app)

# 예외 처리 함수 생성
@app.errorhandler(Exception)
def handle_exception(error):
    # 에러 메시지 정의
    message = getattr(error, 'message', str(error))
    status_code = getattr(error, 'code', 500)

    # JSON 응답 생성
    response = {
        'message': message,
        'status_code': status_code
    }
    return jsonify(response), status_code

# 에러 처리 함수를 사용하는 리소스 생성
class ExampleResource(Resource):
    def get(self):
        # 예외 발생 시 abort 함수 호출
        abort(400, message='Custom error message')

api.add_resource(ExampleResource, '/example')

if __name__ == '__main__':
    app.run()

위의 코드에서는 Flask-RESTful이 기본적으로 제공하는 abort 함수를 사용하여 예외를 발생시키고, 예외 처리 함수를 통해 사용자 정의 에러 응답을 생성합니다. 등록된 route에 요청이 들어올 경우, abort 함수를 호출하여 예외를 발생시키고, 이 예외는 예외 처리 함수로 전달됩니다.

2. 테스트

이제 위에서 작성한 코드를 실행하고, API에 대한 테스트를 수행해보겠습니다.

$ curl -X GET http://localhost:5000/example

위의 명령어를 실행하면 Flask-RESTful이 정의한 예외 발생되고, 예외 처리 함수에 의해 JSON 형식의 사용자 정의 에러 응답이 반환됩니다.

결론

이렇게 Flask-RESTful의 사용자 정의 에러 처리 방법을 알아보았습니다. Flask-RESTful을 사용하여 RESTful API를 구축할 때, 사용자 정의 에러 처리 기능을 추가함으로써 보다 유연하게 오류를 처리할 수 있습니다. Flask-RESTful의 도움으로 높은 수준의 RESTful API를 구현할 수 있습니다.