Serialize 알아보기

JeongJun Min·2024년 2월 6일

Techeer

목록 보기
7/9

Serialize(직렬화)란?

서버 개발을 하다가 Serialize라는 단어를 자주 볼 수 있다. 도대체 무슨 역할을 하는 것일까?

시스템 내에서 사용되는 Object나 Data를 외부에서도 사용할 수 있게 Byte 형태 데이터로 변환하는 것이다.

쉽게 말해, 객체를 데이터스트림으로 만든다.
반대로 Deserialize(역정렬화)는 byte 데이터를 객체로 변환하는 기술이다.

DRF에서는 모델로부터 추출한 쿼리셋이나 모델 객체를 JSON으로 변환하여 클라이언트와 통신한다.

DRF Serializer

# 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를 구현할 수 있다.

참고
What is Serialization?

profile
개발계발

0개의 댓글