간단히 결론부터 말하면 다음과같다.
간단하게 할때 -> viewset
복잡하게 할때 -> apiview
데이터베이스 모델과 직결된 CRUD 작업을 구현할 때, ViewSet과 ModelViewSet이 적합합니다.
URL 라우팅이 자동으로 처리되므로 코드가 간결하고 유지보수가 쉬워집니다.
RESTful 표준 동작(GET, POST, PUT, DELETE 등)을 따르는 경우, ViewSet은 빠르게 CRUD 기능을 구축할 수 있습니다.
커스텀 로직이 적음:
단순 CRUD 작업 외에 추가적인 로직이 거의 필요하지 않을 때 적합합니다.
예를 들어, 블로그 포스트, 사용자 관리 등의 단순한 API를 구축할 때.
단순 CRUD 작업 외에 추가적인 로직이 거의 필요하지 않을 때 적합합니다.
예를 들어, 블로그 포스트, 사용자 관리 등의 단순한 API를 구축할 때.
요청 처리 과정에서 데이터 검증, 외부 API 호출, 복잡한 계산 등이 필요할 때.
예를 들어, 주문 처리 로직, 동적 권한 부여, 상태 전이에 따른 동작 등이 포함된 경우.
RESTful 표준이 아닌 커스텀 URL이 필요하거나, Router로 처리할 수 없는 경로가 있는 경우.
예를 들어, /orders//confirm/와 같은 특정 동작이 포함된 API.
각 HTTP 메서드(GET, POST, PUT, DELETE)에서 동작을 세밀하게 제어해야 할 때.
예를 들어, POST 요청에서 특정 조건에 따라 다른 동작을 실행하거나, 응답 구조가 복잡한 경우.
기본 권한 설정 외에 복잡한 인증 및 권한 로직이 필요한 경우.
ViewSet은 데이터 모델과 관련된 CRUD 작업을 효율적으로 처리할 때 가장 적합하다. Router와 함께 사용하여 URL 라우팅을 자동화하고, RESTful API 설계를 간소화할 수 있다.
만약, 복잡한 비즈니스 로직이나 비표준 URL 설계가 필요하다면 APIView나 GenericAPIView를 사용하는 것이 더 나은 선택일 수 있다. 즉, 간단한 CRUD 중심 API를 개발할 때는 ViewSet이 가장 강력하고 효율적인 도구이지만, 로직이 복잡해질걸 예상한다면 apiview나 다른 커스텀 가능한 DRF를 쓰는게 유용할 듯 하다.