SteadyDrills

Django의 APIView, ViewSets, Generic View 본문

웹개발

Django의 APIView, ViewSets, Generic View

Drills 2025. 1. 16. 23:14

250116

 

 

  APIView Generic View ViewSet
개념 DRF에서 제공하는 가장 기본적인 클래스 기반 뷰 APIView를 상속받아 특정 기능을 구현한 클래스 하나의 클래스로 API 엔드포인트들을 그룹화하는 클래스
상속 관계 DRF의 기본 클래스 APIView 상속
ViewSetMixin와 APIView상속
기능 HTTP 메서드
(GET, POST, PUT, DELETE 등)를 직접 구현하여 API를 처리하며,
데코 레이터를 이용해서 FBV처럼 작성도 가능함.
특정 기능(리스트, 디테일, 생성, 수정, 삭제 등)을 미리 구현하여 재사용성을 높임 다양한 기능을 하나의 클래스로 처리하며, action을 사용하여 각 엔드포인트에 매핑되는 기능을 정의하고, Router를 사용하여 간단하게 URL을 설정 가능
복잡도 가장 높음 → 직접 구현해야 하는 부분이 가장 많음. APIView보다는 간단하지만, 필요한 기능을 직접 구현해야 함 가장 낮음 →이미 많은 부분이 추상화 되어있기 때문에 코드양이제일 적음.
활용도 커스텀 기능이 많거나 복잡한 로직이 필요할 때 CRUD(Create, Read, Update, Delete) 등 일반적인 기능을 구현할 때
다양한 기능을 하나의 엔드포인트에서 처리할 때, 복잡한 API를 그룹화해서 효율적으로 관리할 때
특징 모든 HTTP 메서드를 직접 구현하여 사용자 정의 로직을 추가해야 함 ListAPIView, RetrieveAPIView 등을 상속받아 간단하게 리스트 조회, 상세 조회 기능 등을 구현
ModelViewSet을 사용하여 모델에 대한 CRUD 기능을 한 번에 처리

 

 

 

  • APIView:
    • 가장 기본적인 클래스로, 모든 HTTP 메서드를 직접 구현해야 한다.
    • 커스텀 기능을 구현하거나 복잡한 로직이 필요할 때 사용한다.
    • 높은 자유도를 제공하지만, 코드가 길어질 수 있어 가독성이 안 좋을 수 있다.
  • Generic View:
    • APIView를 상속받아 특정 기능을 미리 구현한 클래스.
    • ListAPIView, RetrieveAPIView 등 다양한 Generic View가 구현되어있다.
    • CRUD 등 일반적인 기능을 구현할 때 효율적이며, APIView보다는 간단하게 코드를 작성할 수 있다.
  • ViewSet:
    • 하나의 클래스로 API 엔드포인트들을 그룹화하는 클래스.
    • ModelViewSet을 사용하면 모델에 대한 CRUD 기능을 한 번에 처리할 수 있다.
    • 가장 간단하게 API를 개발할 수 있다.

 

'웹개발' 카테고리의 다른 글

장고(Django)의 미들웨어(Middleware)  (0) 2025.01.22
Swagger란?  (0) 2025.01.21
로컬 스토리지(LocalStorage)란?  (0) 2025.01.13
장고(Django)의 Routers  (0) 2025.01.10
장고(Django) ViewSets  (3) 2025.01.06