
서버 개발을 하다가 Serialize라는 단어를 자주 볼 수 있다. 도대체 무슨 역할을 하는 것일까?
시스템 내에서 사용되는 Object나 Data를 외부에서도 사용할 수 있게 Byte 형태 데이터로 변환하는 것이다.
쉽게 말해, 객체를 데이터스트림으로 만든다.
반대로 Deserialize(역정렬화)는 byte 데이터를 객체로 변환하는 기술이다.
DRF에서는 모델로부터 추출한 쿼리셋이나 모델 객체를 JSON으로 변환하여 클라이언트와 통신한다.
# app/serializers.py
from rest_framework import serializers
from .models import Person
class PersonSerializer(serializers.ModelSerializer):
class Meta:
model = Person
fields = ['id', 'name', 'email', 'age']
시리얼라이저는 모델에서 만든 클래스를 바탕으로 Meta 내부 클래스를 지정하는데, 필드에서는 외부로 공개할 필드들만 선언할 수 있다. 모든 필드를 선언할 경우, '__all__'을 사용하기도 한다.
app/views.py
from rest_framework import status
from rest_framework.decorators import api_view
from rest_framework.response import Response
@api_view(['POST'])
def createPerson(request):
serializer = PersonSerializer(date=request.data)
if serializer.is_valid():
serializer.save()
return Response({'message': '성공',
'data': serializer.data
}, status=status.HTTP_201_CREATED)
return Response({
'message': '실패',
'data': serializer.errors
}, status=status.HTTP_400_BAD_REQUEST)
위와 같이 Serializer를 적용하여 api를 구현할 수 있다.