1 minute read

  • 요청과 응답

    DRF의 진정한 핵심부

    • 요청(Request) 객체

      평범한 HttpRequest 객체를 확장하여 좀 더 유연하게 요청 파싱

      • request.data

        객체의 핵심 속성

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

        여러 포맷(JSON, yaml) 대응해서 원하는 형태로 응답 객체 렌더링 해줌

    • 응답(Response) 객체

      TemplateResponse 타입

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

    • 상태 코드

      • 기존의 Django

        읽기에도 어렵고 코드에 오류 있어도 발견하기 어려움

      • DRF

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

        숫자로 된 식별자 사용하기 보다 문자 형식의 식별자 사용

    • API 뷰 래퍼

      API view 작성하는데 사용

      view에서 받은 Request에 몇몇 기능 더 하거나 컨텐츠가 잘 변환되도록 Response에 특정 context 추가

      때에 따라 에러 처리도 함

      특정 컨텐츠 형태에 대한 요청이나 응답 명시적으로 연결하지 않음(json, yaml 같은 포맷)

      • @api_view

        데코레이터 함수

        함수 기반 뷰에서 사용

      • APIView

        클래스

        클래스 기반 뷰에서 사용

    • URL 의 접미어를 통해 다른 포맷 제공

      포맷의 접미어를 URL 형태로 전달받을 때 사용

      format 키워드, format_suffix_patterns 패턴 추가로 사용

      • request에서의 포맷 지정

        Accept 헤더, 포맷 접미어, Context-Type 헤더를 사용해 데이터 포맷 지정

    • 탐색 가능한 API

      API는 클라이언트의 요청에 따라 데이터 포맷 결정하여 응답

      웹 브라우저의 요청에 대해서는 기본적으로 HTML 형태로 응답하는 덕분에 API를 웹 브라우저에서 탐색 가능

      • 브라우저 에서 탐색 가능함

        사용성 면에서 유용

        API 쉽게 개발하고 사용하도록 도와줌

        다른 개발자들이 API 파악하고 사용할 떄의 진입 장벽 낮춰줌

Categories:

Updated: