[python] Flask-RESTful이란?

Flask-RESTful은 Python 웹 프레임워크인 Flask를 통해 RESTful한 웹 서비스를 구축하는 데 사용되는 확장 패키지입니다. 이 패키지는 간단하고 직관적인 인터페이스를 제공하여 개발자가 빠르고 쉽게 REST API를 구현할 수 있도록 도와줍니다.

Flask-RESTful의 주요 기능

  1. 자동 URL 맵핑: Flask-RESTful은 URL과 리소스(리소스 클래스)를 매핑하는 기능을 제공합니다. 이를 통해 개발자는 별도의 URL 매핑 작업 없이 간단한 데코레이터를 사용하여 리소스에 엔드포인트를 할당할 수 있습니다.

  2. 리소스 클래스: Flask-RESTful에서는 각 API 엔드포인트를 처리하기 위한 리소스 클래스를 생성할 수 있습니다. 이 클래스는 HTTP 메서드별로 다른 동작을 정의할 수 있으며, RESTful한 웹 서비스를 개발하는 데 있어서 중요한 역할을 합니다.

  3. Request Parsing: 요청 데이터를 파싱하는 기능을 제공하여 개발자가 쉽게 요청으로부터 필요한 데이터를 추출할 수 있습니다. Flask-RESTful은 다양한 파서를 지원하고 있으며, 개발자는 필요에 따라 사용할 수 있습니다.

  4. 에러 처리: Flask-RESTful은 예외 처리를 위한 강력한 기능을 제공합니다. 예외 처리를 통해 클라이언트에게 적절한 오류 메시지와 상태 코드를 반환할 수 있으며, API의 일관성과 안정성을 유지할 수 있습니다.

Flask-RESTful 예제

아래는 Flask-RESTful을 사용하여 간단한 To-Do 리스트 API를 구현하는 예제입니다.

from flask import Flask
from flask_restful import Api, Resource, reqparse

app = Flask(__name__)
api = Api(app)

todos = {}

class TodoResource(Resource):
    def get(self, todo_id):
        if todo_id in todos:
            return todos[todo_id]
        else:
            return "Todo not found", 404
    
    def put(self, todo_id):
        parser = reqparse.RequestParser()
        parser.add_argument('task', type=str, required=True)
        args = parser.parse_args()
        todos[todo_id] = args['task']
        return {todo_id: todos[todo_id]}, 201

api.add_resource(TodoResource, '/todos/<string:todo_id>')

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

상위 코드는 Flask-RESTful과 Flask를 사용하여 To-Do 리스트 API를 구현합니다. API는 /todos/<string:todo_id> 엔드포인트를 통해 To-Do 항목을 조회(GET)하거나 새로운 To-Do 항목을 추가(PUT)할 수 있습니다. 요청 데이터는 reqparse를 사용하여 파싱되며, 결과는 JSON 형식으로 반환됩니다.

참고 자료