[python] Flask-RESTful에서 모델 시리얼라이징 방법

Flask-RESTful을 사용하여 API를 구축할 때, 모델을 시리얼라이즈하여 JSON 형식으로 반환하는 것은 중요한 과정입니다. 이를 통해 클라이언트가 데이터를 쉽게 이해하고 사용할 수 있습니다. 이번 블로그 포스트에서는 Flask-RESTful에서 모델을 시리얼라이즈하는 방법에 대해 알아보겠습니다.

1. Flask-RESTful 설치

먼저 Flask-RESTful 패키지를 설치해야합니다. 다음 명령을 사용하여 패키지를 설치할 수 있습니다:

pip install flask-restful

2. 모델 정의하기

시리얼라이즈할 모델을 먼저 정의해야합니다. 예를 들어, 간단한 사용자 모델을 다음과 같이 정의해보겠습니다:

from flask_restful import fields

class User:
    def __init__(self, id, name, email):
        self.id = id
        self.name = name
        self.email = email

user_fields = {
    'id': fields.Integer,
    'name': fields.String,
    'email': fields.String
}

위 코드에서 fields 모듈을 사용하여 시리얼라이즈할 필드들을 정의하고, 이를 user_fields 변수에 할당합니다.

3. API 엔드포인트 구현하기

이제 시리얼라이즈된 모델을 반환하는 API 엔드포인트를 구현해보겠습니다. Flask-RESTfulResource 클래스를 상속하는 새로운 클래스를 정의하고, GET 메소드를 오버라이드하여 시리얼라이즈된 모델을 반환하도록 구현합니다:

from flask_restful import Resource, marshal_with

class UserResource(Resource):
    @marshal_with(user_fields)
    def get(self, user_id):
        # user_id에 해당하는 사용자 정보를 데이터베이스에서 조회합니다.
        user = User.query.get(user_id)
        return user

위 코드에서 marshal_with 데코레이터 함수를 사용하여 반환값을 시리얼라이즈된 모델로 변환할 수 있습니다. 이를 위해 user_fields 변수를 전달합니다.

4. API 등록하기

마지막으로, Flask-RESTful 애플리케이션에 API 엔드포인트를 등록해야합니다. Flask 애플리케이션을 초기화한 후, add_resource 메소드를 사용하여 API 엔드포인트와 해당 클래스를 등록합니다:

from flask import Flask
from flask_restful import Api

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

api.add_resource(UserResource, '/users/<int:user_id>')

위 코드에서 /users/<int:user_id> URL 패턴에 대한 요청을 UserResource 클래스로 라우팅합니다.

마무리

이제 Flask-RESTful에서 모델을 시리얼라이즈하는 방법에 대해 알아보았습니다. 모델 시리얼라이징은 API 개발에서 중요한 과정이며, 클라이언트에게 적절한 데이터 형식을 제공하기 위해 반드시 수행되어야 합니다. Flask-RESTful을 사용하면 간편하게 모델을 시리얼라이즈할 수 있고, marshal_with 데코레이터를 통해 쉽게 반환값을 변환할 수 있습니다.

참고 자료