처음에 DRF라는 이야기를 들었을 때 Django Rest Framework라고 하여 장고로 이루어진 것을 단순히 Restful 하게 만들어 줄 수 있게 하는 단순한 패키지라고 생각하였는데 동작하는 방식에서 다른 점이 있고 여기서 직렬화를 시켜주는 방식이 들어가는 등 기존과는 다른 점이 있어서 정리하게 되었습니다.
REST Framework라는 말이 나와서 매번 헷갈리는 API, REST API, RESTful에 대해서 간략하게 정리해보겠습니다.
API - 응용프로그램 데이터를 주고받는 규약입니다.
REST API - Json 형태로 CRUD 데이터를 주고받는 규약입니다.
RESTful - REST 방식을 따라서 개발하는 것을 말합니다.
여기서 REST 방식이라고 한다면 자원과 이 자원에 대한 행위를 나눠서 작성하는 것을 말하며 간단한 예제로는
유저에 대한 것을 예로 들어서
GET /user : 유저의 정보들을 가져옴
GET /user/1 : 1번 유저의 정보를 가져옴
PUT /user/1 : 1번 유저의 정보를 수정함
POST /user/1 : 1번 유저를 만듦
DELETE /user/1 : 1번 유저를 삭제함
등의 방식으로 표현할 수 있습니다. 이것으로도 다 표현하지 못하는 경우가 있지만 최대한 이렇게 일괄된 방식으로 구성하여 가독성과 효율성을 높인 구조화된 시스템 아키텍처라고 생각하면 됩니다. 이렇게 구성하게 되면 우리는 하나의 URI로 최소 4가지의 HTTP method를 사용할 수 있습니다.
그리고 여기서 URI를 설계할 때 지키면 좋은 점이 있는데
1. 소문자를 되도록이면 사용
2. 하이픈을 띄어쓰기 대신 사용
3. 확장자를 사용하지 않기 등의 내용입니다.
여기까지 배경 지식에 대한 내용은 그만하고 DRF에 대한 이야기를 해보겠습니다.
Django REST Framework는 장고 안에서 RESTful 한 API 서버를 쉽게 구축할 수 있도록 도와주는 오픈소스 라이브러리입니다.
RESTful 한 API를 쉽게 구축할 수 있게 해 준다는 내용만 알고 있어서 구현할 때의 차이점이 없을 것이라고 생각하였지만 DRF의 큰 기능은 Models를 serializers로 변환하는 것입니다. 이렇게 직렬화를 하여서 메모리에 존재하고 추상적인 Object를 String or bytes로 만들어서 드라이브에 저장도 가능하고 통신선으로 전송도 가능하게 만들어줄 수 있습니다.
처음 보면 이해가 잘 되지 않을 수도 있지만 DRF는 직렬화를 한다라는 것을 생각하면서 다음을 확인해 봅시다.
DRF는 데이터 전송 중간에 직렬화를 시켜줍니다. 간단하게 한 줄로 된 긴 문자열로 만들어준다고 생각하면 되겠습니다. 이것을 이용해서 데이터를 보내게 되며 받는 곳에서는 이 데이터 스트링과 그 데이터의 포맷 정보를 받아서 역직렬화 하여 Object로 다시 변경하여 사용하게 되는 것입니다.
여기까지 Django REST Framework과 Serialization에 대한 설명이었습니다.
내용 중 잘못된 점이나 문의사항은 댓글로 부탁드립니다.
'DevLog' 카테고리의 다른 글
[Unity 게임개발] Player character 변경과 장애물 변경관련 정리 (0) | 2022.07.03 |
---|---|
[Setting] pipenv 사용하기 (0) | 2022.06.29 |
[프로젝트 - Trouble shooting] 개발환경 세팅 (0) | 2022.05.04 |
[Trouble shooting] Django CORS 이슈 (0) | 2022.04.27 |
[Portfolio] GitHub Pages를 이용하여 Gatsby Site 무료로 배포하기 (2) | 2022.04.21 |