[python] Flask-RESTful에서 모델 유효성 검사 방법

Flask-RESTful은 Flask를 기반으로 한 RESTful API를 손쉽게 개발할 수 있는 패키지입니다. RESTful API를 개발하다 보면 입력 받은 데이터의 유효성을 검사해야 할 때가 있습니다. 이번 글에서는 Flask-RESTful에서 모델의 유효성을 검사하는 방법에 대해 알아보겠습니다.

1. Flask-RESTful 밸리데이션 모듈

Flask-RESTful에는 입력 데이터를 검사하는 데 사용할 수 있는 다양한 밸리데이션 모듈이 있습니다. 이 중에서 가장 많이 사용되는 것은 reqparse 모듈입니다. 이 모듈을 사용하면 클라이언트로부터 전송된 요청 데이터를 해석하고, 필요한 검증 규칙을 적용할 수 있습니다.

2. 모델 유효성 검사 예시

예를 들어, 사용자 정보를 저장하기 위한 User 모델이 있다고 가정해봅시다. 이 모델은 다음과 같이 정의되어 있습니다.

from flask_restful import fields

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))
    email = db.Column(db.String(120))
    password = db.Column(db.String(120))

이제 reqparse 모듈을 사용하여 사용자 정보를 검증하는 방법을 알아보겠습니다. 아래 예제 코드를 참고해주세요.

from flask_restful import reqparse

class UserResource(Resource):
    def post(self):
        parser = reqparse.RequestParser()
        parser.add_argument('name', type=str, required=True, help='Name is required.')
        parser.add_argument('email', type=str, required=True, help='Email is required.')
        parser.add_argument('password', type=str, required=True, help='Password is required.')
        
        args = parser.parse_args()

        # 입력 데이터 유효성 검사
        if not validate_email(args['email']):
            return {'message': 'Invalid email format.'}, 400

        # User 모델 생성
        user = User(name=args['name'], email=args['email'], password=args['password'])
        db.session.add(user)
        db.session.commit()

        return {'message': 'User created successfully.'}, 201

위 코드에서 reqparse.RequestParser() 객체를 사용하여 필요한 파라미터와 해당 파라미터의 검증 규칙을 추가합니다. add_argument() 메서드를 통해 파라미터 이름, 타입, 필수 여부 등을 설정할 수 있습니다. 필요한 경우 help 매개변수를 사용하여 검증 실패 시 반환할 메시지를 지정할 수 있습니다.

그리고 parse_args() 메서드를 호출하여 전송된 요청 데이터를 분석하고, 유효성 검사를 수행합니다. 유효성 검사를 통과하지 못한 경우 에러 메시지와 함께 400 상태 코드를 반환할 수 있습니다. 유효성 검사를 통과한 경우 사용자 모델을 생성하고, 데이터베이스에 저장합니다.

이와 같은 방법을 사용하여 Flask-RESTful에서 모델의 유효성을 검사할 수 있습니다.

3. 정리

Flask-RESTful에서 모델의 유효성을 검사하기 위해 reqparse 모듈을 사용할 수 있습니다. 이를 통해 입력 데이터를 분석하고, 필요한 검증 규칙을 적용하여 유효성을 검사할 수 있습니다. 이를 통해 신뢰성 높은 API를 개발할 수 있습니다.

참고 자료