[230207 - TIL] Django - APIView vs ViewSet (DRF tutorial)

Dongwoo Kim·2023년 2월 7일
0

TIL / WIL

목록 보기
77/113

1. 개요

DRF에서 APIView 만 사용을 하다가 회사에서 주로 사용 중인 ViewSets 특징들을 얻기위해 drf tutorial를 통해 실습하면서 알아보았다.


2. DRF tutorial

https://www.django-rest-framework.org/tutorial/3-class-based-views/

Class-based Views

함수 기반 view가 아닌 클래스 기반 view를 사용하여 API 보기를 작성할 수도 있습니다. 보시다시피 이것은 일반적인 기능을 재사용할 수 있게 하고 코드를 DRY 상태로 유지하는 데 도움이 되는 강력한 패턴입니다.


3. Views와 ViewSets 간의 절충

https://www.django-rest-framework.org/tutorial/6-viewsets-and-routers/

뷰셋을 사용하는 것은 정말 유용한 추상화가 될 수 있습니다. URL 규칙이 API 전체에서 일관되도록 하고, 작성해야 하는 코드의 양을 최소화하고, URL conf의 세부 사항이 아닌 API가 제공하는 상호 작용 및 표현에 집중할 수 있도록 합니다.

그렇다고 해서 항상 올바른 접근 방식을 취하는 것은 아닙니다. 함수 기반 보기 대신 클래스 기반 보기를 사용할 때 고려해야 할 유사한 장단점이 있습니다. 뷰 세트를 사용하는 것은 뷰를 개별적으로 작성하는 것보다 덜 명시적입니다.


4. 개인적인 장단점

기존의 APIView는 메소드별 커스텀이 자유롭고 행동방식을 자유롭게 정의할 수 있었다. 다만 때문에 비슷한 로직을 메소드별로 따로 정의해줘야해서 반복되는 코드가 많았다.
이번에 새롭게 알아본 ViewSetMixin, GenericView등의 여러 상속을 거쳐 굉장히 추상화된 기능을 가지고 있다. 하지만 그만큼 여러 요구사항에 부합하도록 기능을 정의하기는 번거로웠다.

사실 APIView에 익숙해져있는 이유도 있겠지만 현재까지는 실제 여러 요구사항을 만족하기위한 api를 작성하기위해서는 APIView가 더 편하다고 생각이 드는건 사실이다. 하지만 ViewSet에 대해서도 앞으로 좀 더 많이 알아보고 추상화와 코드의 재사용에 대해서는 계속해서 신경써야할 부분이라고 느꼈다.



참고

profile
kimphysicsman

0개의 댓글