Django DRF - APIView를 활용한 뷰 만들기
2020년08월11일에듀캐스트 장고&리액트 강의를 듣고 정리하는 글이다.
Serializer를 통한 뷰 처리
Form 처리와 유사한 방식으로 동작하지만, form 생성자의 첫번째 인자는 data이지만, Serializer 생성자의 첫번째 인자는 instance이다.
DRF의 기본 CBV인 APIView
APIView 클래스 혹은 @api_view 장식자를 사용한다. View에 여러 기본 속성을 부여해준다.
- renderer_classes : 직렬화 class 다수
- parser_classes: 비직렬화 class 다수
- authentication_classes: 인증 class 다수
- throttle_classes: 사용량 제한 class 다수
- permission_classes: 권한 class 다수
- content_negotiation_class: 요청에 따라 적절한 직렬화/비직렬화 class를 선택하는 class
- metadata_class: 메타 정보를 처리하는 class
- versioning_class: 요청에서 API버전 정보를 탐지하는 class
APIView
하나의 CBV이므로 하나의 URL만 처리 가능 각 method(get, post, put, delete)에 맞게 멤버함수를 구현하면, 해당 method요청이 들어올 때 호출 아래의 과정을 거치고 나서 호출한다.
- 직렬화/비직렬화 처리
- 인증 체크
- 사용량 제한 체크: 호출 허용량 범위인지 체크
- 권한 클래스 지정: 비인증/인증 유저에 대해 해당 API호출을 허용할 것인지를 결정
- 요청된 API 버전 문자열을 탐지하여, request.version에 저장