byidev.com
2023-06-22 19:24:05


Serializer


DRF Serializer

  • Serializer만 알면 Django와 DRF의 차이점을 모두 파악한 것이나 다름 없음
  • Serializer의 사전적 의미 ⇒ 직렬화
    • 직렬화는 Django 프로젝트에서 내가 만든 모델로부터 뽑은 queryset, 모델 인스턴스를 JSON 타입으로 바꾸는 것
    • Django 모델은 JSON으로 변환하기 위한 틀로 이해할 것

  1. DRF 내에서 데이터를 저장할 때에는 DJANGO의 모델을 통해 저장
    1. 모델은 데이터베이스 테이블을 추상화한 개념
    2. Django의 ORM(Object Relation-Mapping)을 통해 Python 문법으로 데이터를 처리
    3. ⇒ Django의 데이터는 JSON같은 포맷이 아닌 파이썬 객체의 형태로 저장
  2. API는 데이터를 클라이언트에게 보내주는 역할
    1. 정제 또는 정리 되지않은 데이터를 클라이언트가 받을경우 읽지 못하는 Python 데이터 받게됨
    2. 다음과 같은 이유로 Python 데이터를 읽을 수 있는 문자열(JSON 등)로 변환해 보내주어야 함
  3. 결론 : Python 데이터 객체를 문자열로 변환하는 작업을 직렬화, Serialize 라고 함

  1. 클라이언트가 데이터를 DRF 서버에 보내는 경우
    1. POST 요청을 보내는 API를 클라이언트가 사용해 데이터를 생성하려는 경우
      1. 클라이언트는 API 요청에 데이터를 JSON 등 문자열 형태로 입력하여 전송
      2. DRF 서버 입장에서는 문자열 그대로 서버에 저장 불가
      3. 모델을 통해 저장하려면 데이터가 파이썬 객체의 형태이어야 함
    2. Deserialize - 역 직렬화, JSON 등의 문자열을 파이썬 데이터 객체로 변환하는 작업

DRF Serializer data flow