새벽_나그네
12시 지난 새벽
새벽_나그네
전체 방문자
오늘
어제
  • 분류 전체보기
    • TIL
    • DevLog
    • Algorithm
    • ComputerScience
    • etc

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • docker
  • 개발일지
  • Python
  • TodayILearned
  • 내일배움카드
  • 코딩프로젝트
  • 내일배움단
  • 내일배움캠프
  • Github
  • 코딩
  • til
  • AI트랙
  • portfolio
  • 국비지원
  • 프로그래머스
  • Selenium 4
  • 스파르타코딩클럽
  • 자기주도학습
  • 코린이
  • machine learning

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
새벽_나그네

12시 지난 새벽

[DRF] 장고 REST Framework란? 그리고 Serialization
DevLog

[DRF] 장고 REST Framework란? 그리고 Serialization

2022. 5. 4. 20:56

처음에 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 차이 출처 : https://velog.io/@ohwani/Django-DRF-0-Django-Rest-Framework

 DRF는 데이터 전송 중간에 직렬화를 시켜줍니다. 간단하게 한 줄로 된 긴 문자열로 만들어준다고 생각하면 되겠습니다. 이것을 이용해서 데이터를 보내게 되며 받는 곳에서는 이 데이터 스트링과 그 데이터의 포맷 정보를 받아서 역직렬화 하여 Object로 다시 변경하여 사용하게 되는 것입니다.

직렬화와 역직렬화 도식도 출처 : https://velog.io/@ohwani/Django-DRF-0-Django-Rest-Framework

여기까지 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
    'DevLog' 카테고리의 다른 글
    • [Unity 게임개발] Player character 변경과 장애물 변경관련 정리
    • [Setting] pipenv 사용하기
    • [프로젝트 - Trouble shooting] 개발환경 세팅
    • [Trouble shooting] Django CORS 이슈
    새벽_나그네
    새벽_나그네
    IT, 프로그래밍, 정보, 스마트스토어

    티스토리툴바

    단축키

    내 블로그

    내 블로그 - 관리자 홈 전환
    Q
    Q
    새 글 쓰기
    W
    W

    블로그 게시글

    글 수정 (권한 있는 경우)
    E
    E
    댓글 영역으로 이동
    C
    C

    모든 영역

    이 페이지의 URL 복사
    S
    S
    맨 위로 이동
    T
    T
    티스토리 홈 이동
    H
    H
    단축키 안내
    Shift + /
    ⇧ + /

    * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.