장고의 View 계층은 MTV 아키텍쳐 개발에 적합한 View 구현체를 제공합니다. 그러나 API 기반의 백엔드 웹 서버를 개발할 때는 이런 구현체가 크게 활용되지 않습니다. 개발 트렌드가 MTV 아키텍처를 선호하지 않게 되면서 장고는 API 개발에 필요한 View 구현체를 제공하는 대신 웹 프레임워크가 가져야하는 내부 코어 모듈 개발에 집중했습니다. API 개발을 위한 View 구현체는 다른 장고 라이브러리에 위임했습니다. 클래스 기반 View 개발에 집중한 라이브러리가 지금 독자들이 공부중인 DRF이고, 함수 기반 View 개발에 집중한 것이 장고 닌자입니다. 이번 장에서 여러분들은 바로 이 DRF의 클래스 기반 View에 대해 좀 더 자세히 공부하게 될 것입니다.

5.1 DRF View의 이해

기본 장고와 DRF 모두 View를 가지고 있습니다. 그러나 둘은 어떤 차이가 있을까요? DRF와 장고의 기본 View 차이점은 주로 렌더링 및 파싱, 인증 및 권한, 브라우저블 API 그리고 View 함수와 Serializer, ViewSet 클래스에서 차이가 있습니다. 이들 차이점을 자세히 알아보겠습니다.

렌더링 및 파싱

Django REST Framework (DRF)는 특히 다양한 미디어 타입을 지원하며, 요청을 파싱하고 응답을 렌더링하는 로직을 제공합니다. 이는 API를 구축하는 데 있어서 유연성과 다양성을 제공하며, 클라이언트와 서버 간의 데이터 교환을 쉽게 만들어 줍니다. 예를 들어, JSON, XML, HTML 등 다양한 format의 데이터를 서로 주고받을 수 있습니다. 반면에, Django의 기본 View는 주로 HTML을 렌더링하는데 중점을 두며, API 구축에 필요한 추가적인 렌더링 및 파싱 로직을 제공하지 않습니다. 이러한 차이로 인해 DRF를 사용하면 클라이언트와 서버 간의 데이터 통신을 보다 유연하게 처리할 수 있습니다.

인증 및 권한

Django REST Framework (DRF)는 확장 가능한 인증 및 권한 체크 시스템을 제공합니다. 이 시스템은 API의 보안을 강화하며, 다양한 인증 및 권한 체크 메커니즘을 쉽게 구현할 수 있게 해줍니다. 예를 들어, 토큰 기반, 세션 기반, OAuth 인증 등 다양한 인증 방식을 사용할 수 있습니다. Django의 기본 View는 이러한 인증 및 권한 체크 기능을 내장하고 있지 않습니다. 따라서 DRF를 사용하면 개발자가 직접 인증 및 권한 체크 로직을 구현할 필요가 없어 편리합니다. 이러한 편리함으로 인해 DRF를 사용하면 API의 보안을 강화하고, 인증 및 권한 체크를 쉽게 구현할 수 있습니다.

브라우저블 API

Django REST Framework (DRF)는 브라우저에서 직접 API를 탐색하고 상호 작용할 수 있는 브라우저블 API를 제공합니다. 이는 API의 디버깅과 테스팅을 쉽게 만들어 줍니다. 예를 들어, API 엔드포인트를 브라우저에서 직접 테스트하고 결과를 확인할 수 있습니다. Django의 기본 View는 이러한 브라우저블 API 기능을 제공하지 않습니다. 따라서 DRF를 사용하면 개발자가 API를 테스트하고 디버깅할 때 더욱 편리합니다. 이러한 기능으로 인해 DRF를 사용하면 API의 디버깅 및 테스팅이 용이해지며, 개발자는 더욱 효율적으로 API를 개발할 수 있습니다.

View 함수와 Serializer, ViewSet 클래스

Django의 일반 애플리케이션에서는 주로 view 함수를 사용하여 요청 객체를 처리하고 응답 객체를 반환합니다. 이는 서버 측 렌더링에 중점을 둡니다. 반면에, DRF에서는 view 함수 대신 Serializer와 ViewSet 클래스를 사용하여 데이터를 직렬화하고 API 엔드포인트를 정의합니다. Serializer는 데이터를 직렬화하고 역직렬화하기 위한 클래스이며, ViewSet은 API 엔드포인트를 정의하는 클래스입니다. Serializer와 ViewSet 클래스를 사용하면 CRUD(Create, Read, Update, Delete) 등의 작업을 포함한 대부분의 API 엔드포인트를 간단하게 정의할 수 있습니다. 이는 API 서버 구축을 위해 사용되며, DRF를 이용하면 유연하고 확장성 있는 API를 쉽게 작성할 수 있습니다. 이러한 기능으로 인해 DRF를 사용하면 개발자는 더욱 효율적으로 API를 개발하고 관리할 수 있습니다.

위에서 설명한 것처럼, DRF와 장고의 기본 View는 목적과 기능면에서 차이가 있습니다. DRF는 API를 구축하는 데 있어서 더욱 유연하고 다양한 기능을 제공하며, 개발자가 보다 편리하게 인증, 권한 체크, 브라우저블 API 등을 구현할 수 있습니다. 따라서 DRF를 사용하면 API 개발과 관리가 더욱 효율적이고 편리해집니다. 이러한 이유로 많은 개발자들이 DRF를 사용하여 복잡한 API를 구축하고 있습니다.

5.2 API View와 Generic View

API View

API View와 Generic View는 Django Rest Framework (DRF)에서 제공하는 두 가지 주요 View 클래스 유형입니다. 이 두 View클래스는 API를 구축할 때 중요한 역할을 수행하며, 각각의 목적과 활용도에 따라 선택됩니다. 이들의 구조와 기능을 비교하여 자세히 알아보겠습니다.