DRF
는 Response를 제공하는 API의 형태로 결과물이 나온다. 즉, 템플릿이 아닌 JSON과 같은 형태의 응답을 제공한다는 것인데 그렇다면 템플릿을 대신할 무언가
가 필요하게 된다. 기존에는 뷰에서 템플릿으로 데이터를 제공해주었다면 이제 다른 곳이 데이터를 처리하도록 해야 하는데, Serializer
가 바로 그 역할을 수행한다.
Serializer
=직렬화
직렬화는 Django 프로젝트에서 내가 만든 모델로부터 뽑은 queryset, 즉 모델 인스턴스를 JSON 타입으로 바꾸는 것이다. 간단히 Django 모델을 JSON으로 변환하기 위한 모양 틀 정도로 생각할 수 있다.
DRF 내에서 데이터를 저장할 때에는 Django의 모델을 통해 저장한다. 모델은 데이터베이스 테이블을 추상화한 개념이며 Django의 ORM을 통해 파이썬 문법으로 데이터를 처리할 수 있다. 즉, Django에서의 데이터는 JSON과 같은 포맷이 아닌, 파이썬 객체
의 형태로 저장된다.
API는 이런 데이터를 클라이언트에 보내주는 역할을 한다. 클라이언트가 데이터를 이해할 수 있도록 하기 위해선 기존의 파이썬 데이터를 읽을 수 있는 문자열(JSON 등)으로 변환하여 보내주어야 하고, 이렇게 파이썬 데이터 객체를 문자열로 변환하는 작업을 직렬화
, Serialize
라고 한다.
반대로 클라이언트가 DRF 서버에 데이터를 보내는 경우 클라이언트는 JSON 등 문자열 형태로 데이터를 보내게 된다. 이때 DRF 서버는 JSON 등 문자열을 파이썬 데이터 객체로 변환하게 되는데 이를 역직렬화
, Deserialize
라고 한다.