Django REST 프레임워크는 Django 기반의 웹 애플리케이션에서 RESTful API를 손쉽게 개발하기 위한 강력한 도구입니다. 이 프레임워크를 사용하면 데이터를 직렬화하고 역직렬화하는 작업을 위한 시리얼라이저를 쉽게 정의할 수 있습니다.
시리얼라이저란?
시리얼라이저는 Django REST 프레임워크에서 데이터를 JSON 또는 다른 포맷으로 변환하는데 사용되는 객체입니다. 시리얼라이저를 통해 웹 애플리케이션과 클라이언트 사이에서 데이터를 주고받을 수 있습니다. 이는 데이터를 브라우저에서 소비하거나, 다른 애플리케이션과의 상호작용에 유용합니다.
시리얼라이저 클래스 정의하기
Django REST 프레임워크에서 시리얼라이저 클래스를 정의하는 것은 간단합니다. 먼저, rest_framework.serializers.Serializer
클래스를 상속하여 시리얼라이저를 만들고, 필드를 정의합니다.
from rest_framework import serializers
class BookSerializer(serializers.Serializer):
title = serializers.CharField(max_length=100)
author = serializers.CharField(max_length=100)
publication_date = serializers.DateField()
위의 예제에서 BookSerializer
는 Serializer
클래스를 상속하고 있습니다. 이 시리얼라이저는 title
, author
, publication_date
라는 세 가지 필드를 가지고 있습니다. 필드는 CharField
나 DateField
와 같은 시리얼라이저 클래스를 사용하여 정의됩니다.
객체 직렬화하기
시리얼라이저 객체를 사용하여 Django 모델 인스턴스를 JSON로 변환할 수 있습니다.
book = Book(title='Django for Beginners', author='William Vincent', publication_date='2020-01-01')
serializer = BookSerializer(book)
serialized_data = serializer.data
위의 예제에서 Book
모델 인스턴스 book
를 BookSerializer
를 사용하여 직렬화 하고 있습니다. 이를테면 serializer.data
는 다음과 같은 결과를 반환할 것입니다:
{
'title': 'Django for Beginners',
'author': 'William Vincent',
'publication_date': '2020-01-01'
}
데이터 역직렬화하기
사용자가 제출한 데이터를 시리얼라이저를 사용하여 역직렬화할 수도 있습니다.
data = {
'title': 'Django for Beginners',
'author': 'William Vincent',
'publication_date': '2020-01-01'
}
serializer = BookSerializer(data=data)
if serializer.is_valid():
book = serializer.save()
위의 예제에서 BookSerializer
의 data
인자에 사용자가 제출한 데이터를 전달하고 있습니다. is_valid()
메서드를 사용하여 데이터의 유효성을 검사한 뒤, save()
메서드를 호출하여 데이터를 역직렬화하고 모델 인스턴스를 생성합니다.
결론
Django REST 프레임워크를 사용하면 시리얼라이저를 이용하여 데이터를 직렬화하고 역직렬화할 수 있습니다. 이를 통해 RESTful API를 손쉽게 개발하고, 웹 애플리케이션과 클라이언트 사이에서 데이터를 주고받는 작업을 효율적으로 처리할 수 있습니다.