장고 REST 프레임워크 - Generic Views
장고 레스트 프레임워크(Django REST framework)를 이용해서 API를 제작할 때, 주로 사용하게 되는 기본적이고 구체적인 뷰 클래스(Concrete View Classes)들의 종류와 각각의 기능들에 대해 알아보겠습니다. Django REST framework에는 크게 9가지의 APIView들이 존재합니다. 아래에 열거된 9개의 class들이 제네틱 뷰(generic views)를 사용한다면 실질적으로 사용하게 될 class들입니다. 자체적으로 커스터마이징 한 class를 사용할 수도 있지만, 특별한 경우가 아니라면 대부분 아래 9개의 class들 중 하나를 사용하게 됩니다. View Class들의 이름은 직관적입니다. 그래서 이름만으로도 각각의 class들이 어떤 기능을 담당하는지 쉽게 알 수 있습니다. 보다 쉬운 이해를 돕고자 RetrieveAPIView와 RetreiveDestroyAPIView는 예시 코드와 결과 화면을 첨부하였습니다.
단, 다음의 view class들을 사용하기 위해선, rest_framework.generics를 불러와야 합니다.
from rest_framework import generics
CreateAPIView
오직 create만 가능한 endpoint입니다. post 메서드 핸들러를 제공합니다. CreateAPIView는 GenericAPIView와 ListModelMixin으로 확장 가능합니다.
ListAPIView
데이터베이스(DB)에 있는 모델의 개체들, 즉 모델의 인스턴스(model instance)들을 나열해서 보여주는, 오직 read만 가능한 endpoint입니다. GET 메서드(method)로 호출할 수 있으며, GenericAPIView와 ListModelMixin으로 확장 가능합니다.
RetrieveAPIView
단 하나의 모델 인스턴스만을 불러와 read 할 수 있습니다. 역시 GET 메서드를 사용하면 되고, GenericAPIView와 RetrieveModelMixin으로 확장할 수 있습니다.
DestroyAPIView
하나의 모델 인스턴스를 삭제(delete)할 수 있는 endpoint입니다. 딜리트 메서드(delete method)를 제공하며, GenericAPIView와 DestroyModelMixin으로 확장할 수 있습니다.
UpdateAPIView
모델 인스턴스 하나를 수정하고 갱신할 수 있는, update-only endpoint입니다. PUT 혹은 PATCH 메서드로 호출해야 하며, GenericAPIView와 updateModelMixin으로 확장할 수 있습니다.
ListCreateAPIView
데이터베이스에 있는 개체들을 전부 불러와서 읽고 쓰는 것(read & write)이 가능한 종점(endpoint)입니다. 당연히 읽는 것은 GET 메서드로, 쓰는 것은 POST 메서드로 호출해야 하며, GenericAPIView와 ListModelMixin, CreateModelMixin으로 확장 가능합니다.
RetrieveUpdateAPIView
데이터베이스에 있는 모델 개체 하나를 선택해서 읽고, 수정할 수 있는 endpoint입니다. 당연히 읽는 것(read)은 GET 메서드로, 수정(update)하고자 할 땐 PATCH 메서드를 사용해야 합니다. GenericAPIView와 RetrieveModelMixin, UpdateModelMixin으로 확장 가능합니다.
RetrieveDestroyAPIView
싱글 모델 인스턴스를 불러와 읽거나 삭제하고자 할 때 사용할 수 있는 endpoint입니다. 읽고자 할 땐 GET 메서드를, 데이터베이스 개체를 삭제하고자 할 땐, DELETE 메서드를 사용해야 합니다. GenericAPIView와 RetrieveModelMixin, DestroyModelMixin으로 확장 가능합니다.
RetrieveUpdateDestroyAPIView
데이터베이스에 있는 개체를 불러와 읽고, 쓰고, 삭제하는 것까지 가능하게 하고자 할 때 사용할 수 있는 엔드포인트입니다. read기능을 구현하고자 할 땐 get method를, write 기능은 put이나 patch method를, 마지막으로 delete 기능을 사용하고자 할 땐 delete method를 사용해야 합니다. GenericAPIView와 RetrieveModelMixin, UpdateModelMixin, DestroyModelMixin으로 확장할 수 있습니다.
지금까지 장고의 REST framework에서 제공하는 generic view classes의 종류와 각각의 기능에 대해 알아보았습니다. 각각의 뷰 클래스들 마다 확장할 수 있는 영역들에 대해 보다 자세한 정보를 확인하고 싶으신 분들은, Django REST framework의 공식 홈페이지를 이용하시기 바랍니다.
Django REST framework 공식 홈페이지 주소:
https://www.django-rest-framework.org/api-guide/generic-views/#concrete-view-classes
'Django > REST framework' 카테고리의 다른 글
[장고] REST API 사용 이유 (0) | 2021.08.22 |
---|