Django/REST framework

[REST] Generic View Classes 종류 및 기능

QUERY 2021. 9. 15. 01:49

 

 

장고 REST 프레임워크  - Generic Views

django-rest-framework-logo
django-rest-framework-logo

 

장고 레스트 프레임워크(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으로 확장할 수 있습니다.

generics의-RetrieveAPIView-사용한-views.py-모습
generics의 RetrieveAPIView 사용한 views.py 모습 
RetrieveAPIView의-결과-화면
RetrieveAPIView의 결과 화면

 

 

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으로 확장 가능합니다.

generics의-RetrieveDestroyAPIView-사용한-views.py-모습
generics의 RetrieveDestroyAPIView 사용한 views.py 모습 
RetrieveDestroyAPIView의-결과-화면
RetrieveDestroyAPIView의 결과 화면

 

 

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

 

Generic views - Django REST framework

 

www.django-rest-framework.org

 

'Django > REST framework' 카테고리의 다른 글

[장고] REST API 사용 이유  (0) 2021.08.22