Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- flask
- 장고
- redis
- 자료구조
- SQL
- Wil
- Til
- 오블완
- Doker
- web
- django
- Python
- 도커
- 쿠키(cookie)
- github
- viewsets
- git
- ERD
- 티스토리챌린지
- 세션(Session)
- nginx
- 개발공부
- 연습
- 파이썬
- NoSQL
- 아티클 스터디
- 코딩테스트
- docker
- CS
- JWT
Archives
- Today
- Total
SteadyDrills
Django의 APIView, ViewSets, Generic View 본문
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 |