less than 1 minute read

  • ViewSet & Router

    DRF 에서 제공하는 추상 클래스

    이용 시 API 의 상호작용이나 상태별 모델링에 집중할 수 있음

    URL 구조는 기본 관례에 따라 자동으로 설정됨

    • ViewSet

      View와 비슷한 클래스

      get, put 메서드는 지원하지 않음

      read, update 메서드 지원

      핸들러 메서드가 실제 뷰로 구체화될 떄 이를 연결해주기만 함

      복잡한 URL 설정은 Router 클래스 사용

      • View 와의 장단점 비교

        • 장점

          ViewSet의 유용한 추상화

          API 전반에 걸쳐 일관적인 URL 관례 구현할 수 있음

          작성할 코드 양 최소한으로 유지

          URL 설정에 낭비될 정성을 API의 상호작용과 표현 자체에 쏟을 수 있음

        • 단점

          명확함이 약해짐

      • ReadOnlyModelViewSet

        ‘읽기 전용’ 기능 자동 자원

        queryset, serializer_class 속성은 여전히 설정

      • ModelViewSet

        읽기 기능과 쓰기 기능 모두 지원

      • @action

        데코레이터 함수

        create, update, delete에 해당하지 않는 기능에 사용

        사용한 기능은 기본적으로 GET 요청에 응답

        methods 인자 설정해서 POST 요청에 응답

        추가 기능의 URL 은 기본적으로 메서드 이름과 같음

        url_path 인자로 URL 변경 가능

      • ViewSet과 URL 명시적으로 연결

        핸들러 메서드는 단지 URL 설정과 연결하는 기능만 담당

        urls.py파일에서 ViewSet 클래스를 실제 View(concrete view)와 연결

    • Router

      View를 라우터에 적절히 등록 시 View 코드와, View, URL이 관례적으로 자동 연결됨(DRF가 알아서 다 함)

      • DefalultRouter

        API의 최상단 뷰를 자동으로 생성해주는 클래스

      View

Categories:

Updated: