개발/Django, DRF

Django REST Framework(DRF) Serializer 이해하기, 장단점

심집사 2023. 7. 12. 02:14

 

Django REST Framework(DRF)는 Django 기반의 웹 API 개발을 위한 프레임워크입니다. 이 글에서는 DRF에서 중요한 역할을 하는 Serializer에 대해 알아보겠습니다.

 

 

Serializer란?

Serializer는 Django REST Framework에서 데이터의 직렬화(Serialization)와 역직렬화(Deserialization)를 담당하는 컴포넌트입니다. Django의 Model 인스턴스나 QuerySet을 JSON, XML 등의 컨텐츠 형태로 변환하거나, 반대로 클라이언트로부터 전달받은 데이터를 Model 인스턴스로 변환하는 작업을 수행합니다. Serializer는 데이터 유효성 검사와 같은 추가 기능도 제공합니다.

 

Serializer 사용 방법

기본적으로 DRF에서는 serializers.Serializer와 serializers.ModelSerializer 두 가지 주요 Serializer 클래스를 제공합니다.

  • serializers.Serializer: DRF 기본 Serializer 클래스로써, Serializer가 사용될 필드를 직접 정의해야 합니다. 명시적으로 필드를 정의하려는 경우 사용합니다.
python
from rest_framework import serializers
from .models import MyModel

class MyModelSerializer(serializers.Serializer):
    field1 = serializers.CharField(max_length=100)
    field2 = serializers.IntegerField()
    ...
  • serializers.ModelSerializer: Django Model과 관련된 Serializer로써, 자동으로 Model의 필드를 가져와 세팅합니다. Django Model과 직접 연결된 Serializer를 생성할 때 사용합니다.
python
from rest_framework import serializers
from .models import MyModel

class MyModelSerializer(serializers.ModelSerializer):
    class Meta:
        model = MyModel
        fields = ['field1', 'field2', ...]

Serializer 장점

  • 데이터 변환 간편성: DRF의 Serializer는 파이썬 객체와 JSON, XML과 같은 콘텐츠 형태 간의 변환을 쉽게 처리할 수 있습니다. 이를 통해 API 개발자는 데이터 전달과 관련된 구현에만 집중할 수 있습니다.
  • 유효성 검사 및 오류 처리: Serializer는 유효성 검사와 함께 관련 오류 처리를 자동으로 수행합니다. 이를 통해 API 개발자는 필드 유효성 검사와 같은 추가 작업 없이 안전하고 견고한 웹 API를 구현할 수 있습니다.
  • 확장성: Serializer의 기본 기능 외에도 사용자 정의 Serializer를 만들어 특정 상황에서 요구하는 동작을 구현할 수 있습니다. 이를 통해 다양한 요구 사항에 맞게 Serializer를 조정할 수 있습니다.

Serializer 단점

  • 추가적 학습 곡선: DRF의 Serializer를 사용하려면 일반 Django Model 이외에 추가적으로 Serializer 클래스와 기능에 대한 학습이 필요합니다. 처음 접하는 개발자에게는 이 과정에서 어려움을 겪을 수 있습니다.
  • 처리 속도: Serializer는 데이터 변환 작업을 수행하기 위해 추가적인 처리를 요구합니다. 이로 인해 대규모의 데이터셋에서 성능에 영향을 미칠 수 있습니다. 따라서 대용량 데이터 처리에 대한 최적화가 필요할 수 있습니다.