REST API의 REST는 REpresentational State Transfer의 약자로, 사용자의 행위를 HTTP method로 분리해 url의 구조를 단순화시켜 줌으로써 개발의 확장과 수정을 용이하게 해 줍니다.
이해를 돕기 위해 보다 구체적인 예를 들어보겠습니다. 행위에 따른 카테고리의 URL들을 다음과 같이 정의해보겠습니다.
/show/category/ # 카테고리 나타내기
/add/category/ # 카테고리 추가
/change/category/ # 카테고리 변경
/delete/category/ # 카테고리 삭제
만약, 각각의 카테고리마다 포스트들이 존재한다고 가정해보겠습니다. 그럼 순식간에 url이 복잡해지기 시작합니다.
/showpost/category/post/ # 포스트 나타내기
/addpost/category/post/ # 포스트 추가
/changepost/category/post # 포스트 변경
/deletepost/category/post # 포스트 삭제
show, add, change, delete 등은 어떤 행위에 대한 표현이고, category나 post는 어떤 리소스의 이름인데, 하려는 행위가 많아질수록 앞에 붙는 url 수식어가 늘어나면서 점점 복잡해지고 수정이 힘들어지게 되는 것을 확인할 수 있습니다.
이런 기존의 단점을 보완하고자 등장한 것이 바로 REST입니다. 위에서도 언급했듯이 REST는 행위에 대한 표현을 HTTP method로 분리합니다. 다음은 REST형식의 URL입니다.
/category/ # http method: GET이면 카테고리 나타내기
/category/ # http method: POST면 카테고리 추가
/category/ # http method: PUT이면 카테고리 변경
/category/ # http method: DELETE면 카테고리 삭제
보다 명확한 비교를 위해, 카테고리 안에 포스트를 추가할 경우도 함께 비교해보겠습니다.
/category/post/ # http method: GET이면 포스트 나타내기
/category/post/ # http method: POST면 포스트 추가
/category/post/ # http method: PUT이면 포스트 변경
/category/post/ # http method: DELETE면 포스트 삭제
HTTP method는 건드리지 않은 채, url에 리소스 이름만 추가하면 되므로 url이 훨씬 직관적이며 간결해진 것을 확인할 수 있습니다. 즉, 개발자에게 url의 확장과 수정을 용이하게 해 주어, 결과적으로 개발 시간을 단축시켜준다는 점이 바로 REST형식을 사용하는 큰 이유입니다.
장고 레스트 프레임워크에 대해 보다 자세한 내용이 궁금하시다면, 아래 링크를 통해 공식 홈페이지를 확인하시기 바랍니다.
Django-REST-framework 공식 홈페이지:
https://www.django-rest-framework.org/
'Django > REST framework' 카테고리의 다른 글
[REST] Generic View Classes 종류 및 기능 (0) | 2021.09.15 |
---|