DRF 공부

정경수·2022년 8월 9일
0
  • 백엔드를 위한 DJANGO REST FRAMEWORK with 파이썬 책을보며 작성한 글입니다.

Django Rest Framework 는 django를 기반으로 REST API 서버를 만들기 위한 라이브러리 이다.

API는 웹 뿐만 아니라 앱과 같은 다양한 플랫폼의 백엔드 서비스를 위해 JSON과 같은 규격화 된 데이터를 제공한다.

DRF를 사용하면 기존 자체적인 웹 템플릿에게 바로 데이터를 전달해주었던 django 프로젝트에서 JSON과 같은 양식으로 다양한 플랫폼의 클라이언트에게 데이터를 제공해 줄 수 있는 API 서버 플젝트가 완성된다.

기존에는 views.py에서 템플릿으로 데이터를 제공해주었다면 DRF에서는 serializer.py 에서 그 역할을 수행한다.

serializer는 '직렬화' 이다.

직렬화는 django 프로젝트에서 내가 만든 모델로부터 뽑은 query set, 모델 인스턴스를 JSON 타입으로 바꾸는 것이다.

DRF 내에서 데이터를 저장할 때에는 django의 모델을 통해 저장한다.
모델은 앞서 살펴본 것처럼 데이터베이스 테이블을 추상화한 개념이고 django의 ORM을 통해 파이썬 문법으로 데이터를 처리할 수 있다. 그렇기 때문에 django에서의 데이터는 JSON이나 이런 포맷이 아닌, 파이썬 객체의 형태로 저장된다.

API는 이런 데이터를 클라이언트에 보내주는 역할을 한다. 이때 어떤 작업도 하지않고 데이터를 그대로 보내준다면 클라이언트는 읽지도 못하는 파이썬 데이터를 받게 될 것이다. 당연히 이를 위해 파이썬 데이터를 읽을 수 있는 문자열(JSON 등)로 변환하여 보내주어야 하고, 이렇게 파이썬 데이터 객체를 문자열로 변환하는 작업을 직렬화라고 한다.

반대로 클라이언트가 데이터를 DRF 서버로 보내주는 경우도 있다.
POST 요청을 보내는 API를 클라이언트가 사용해 데이터를 생성하려는 경우, 클라이언트는 API요청에 데이터를 JSON등 문자열 형태로 입력하여 보내줄 것이다.

DRF서버 입장에서는 이 문자열을 그대로 모델을 통해 저장할 수 없다.

모델을 통해 저장하려면 데이터가 파이썬 객체의 형태여야 하기 때문이다.

따라서, 앞선 경우와 반대로 JSON등 문자열을 파이썬 데이터 객체로 변환하는 작업이 필요하다.
이것을 역직렬화 deserialzier 라고 한다.

profile
장 : 장고를 한번 마스터해볼까 합니다 고 : Go

0개의 댓글