Request Objects


REST Framework는 기존의 HttpRequest를 확장하는 Request 객체를 소개하고 더욱 유연한 요청 파싱을 제공한다. Request 객체의 핵심 기능은 request.data 속성이다. request.POST와 비슷하면서도 WEB API를 작업할 때 더 유용한 속성이다.

request.POST # form data만 다루고 POST 메소드에서만 작동한다.
request.data # 모든 데이터를 다룬다. POST, PUT, 그리고 PATCH 메소드에서 작동한다.

Response Objects


REST Framework Response 객체 또한 소개하는데, Response 객체는 렌더링 되지 않은 컨텐츠를 가지고, 클라이언트에게 정확한 컨텐츠 타입을 결정해서 반환하기 위한 컨텐츠 협상을 사용하는 TemplateResponse의 종류 중 하나이다.

return Response(data) # 클라이언트가 요청한대로 컨텐츠 타입을 렌더링한다.

Status Codes


숫자로된 HTTP 상태 코드를 view에서 사용하는 것은 가독성이 항상 좋은 것만은 아닐 뿐더러, 사용자가 에러 코드를 잘 못 받았을 때 쉽게 깨닫지 못할 수도 있다. REST Framework는 각각의 상태 코드를 위해 더욱 명백한 식별자를 제공하는데, status모듈 안의 HTTP_400_BAD_REQUEST 같은 것이다. View를 작성하는 내내 숫자 식별자보다는 이런 방식으로 **status 모듈을 사용해 주는 것이 좋다**.

Wrapping API Views


REST Framework는 API view를 작성할 때 사용할 수 있는 두 가지 wrapper를 제공한다.

  1. 함수 기반의 view에서 사용할 수 있는 @api_view
  2. 클래스 기반의 view에서 사용할 수 있는 APIView

이 두 wrapper는 몇 개의 기능들을 제공하는데, 사용자의 view에서 Request 인스턴스를 확실하게 받을 수 있게 해주는 것과, 컨텐츠 협상을 수행할 수 있게 Response 객체에 컨텍스트를 추가해주는 것이다.