1 minute read

  • DRF 란

    Django에 RESTful API 개발에 도움을 주는 오픈소스 라이브러리

  • 특장점

    • 웹 브라우저 API는 범용성이 커서 개발을 쉽게 만들어줌

    • 인증 정책을 위한 추가적인 패키지 이용에 도움 줌

    • serialize 기능 제공

    • 문서화 및 커뮤니티 지원

  • serializer(직렬화)

    Queryset(DB data)을 Nested 한 JSON 으로 매핑하는 class

    • 기존 Django 와의 비교

      • 기존의 Django를 이용한 웹 개발

      Django ORM의 Queryset(DB data) 은 template로 넘겨지며 HTML로 렌더링돼 Response 로 보내짐

      • DRF

      serializer를 이용하여 DB data를 JSON으로 매핑하거나 그 역을 통해 RESTful 에 적합하게 API 작성 도와줌

    • ModelSerializer

      serialize 내의 클래스

      이미 models.py에 작성해둔 필드에 맞는 serializser를 만들 수 있도록 해주는 지름길

      각 모델 인스턴스를 model_to_dict 과정 없이 쉽게 직렬화 시켜주며 코드길이 짧게 해줌

  • 요청과 응답

    • 요청(Request) 객체

      기존 Django의 평범함 HttpRequest 객체를 확장하여 좀 더 유연하게 요청을 파싱 함

      • request.data

        Request 객체의 핵심 속성

        request.POST 와 비슷하지만 웹 API에 좀 더 적합

    • 응답(Response) 객체

      TempateResponse 타입

      렌더링되지 않은 컨텐츠를 불러와 클라이언트에게 리턴할 컨텐츠 형태로 변환시킴

    • 상태 코드

      각 상태 코드에 대해 좀 더 명확한 식별자를 제공

      기존의 View 에서의 상태 코드는 읽기에도 어려ㅇㅂ고 코드에 오류 발생 시 발견하기 어려운 문제 보완

    • API 뷰 래퍼

      API 뷰를 작성하는데 사용할 수 있는 래퍼 제공

      • @api_view

        데코레이터

        함수 기반 뷰에서 사용

      • APIView

        클래스

        클래스 기반 뷰에서 사용

        기능 재사용과 코드 중복(DRY) 막아줌

  • 인증과 권한

    웹 API 에서 사용자의 코드 조작에 대한 인증과 권한 제공

  • 관계 & 하이퍼링크

    요소의 사이의 관계를 다룸에 다양한 방법 제공

  • 뷰셋과 라우터

    View에 대해 추상화된 다양한 클래스 제공

    URL 설정으로 HTTP 메서드에 따라 View 와 연결 제공

Categories:

Updated: