REST Framework는 기존의 HttpRequest
를 확장하는 Request
객체를 소개하고 더욱 유연한 요청 파싱을 제공한다. Request
객체의 핵심 기능은 request.data
속성이다. request.POST
와 비슷하면서도 WEB API를 작업할 때 더 유용한 속성이다.
request.POST # form data만 다루고 POST 메소드에서만 작동한다.
request.data # 모든 데이터를 다룬다. POST, PUT, 그리고 PATCH 메소드에서 작동한다.
REST Framework Response
객체 또한 소개하는데, Response
객체는 렌더링 되지 않은 컨텐츠를 가지고, 클라이언트에게 정확한 컨텐츠 타입을 결정해서 반환하기 위한 컨텐츠 협상을 사용하는 TemplateResponse
의 종류 중 하나이다.
return Response(data) # 클라이언트가 요청한대로 컨텐츠 타입을 렌더링한다.
숫자로된 HTTP 상태 코드를 view에서 사용하는 것은 가독성이 항상 좋은 것만은 아닐 뿐더러, 사용자가 에러 코드를 잘 못 받았을 때 쉽게 깨닫지 못할 수도 있다. REST Framework는 각각의 상태 코드를 위해 더욱 명백한 식별자를 제공하는데, status
모듈 안의 HTTP_400_BAD_REQUEST
같은 것이다. View를 작성하는 내내 숫자 식별자보다는 이런 방식으로 **status
모듈을 사용해 주는 것이 좋다**.
REST Framework는 API view를 작성할 때 사용할 수 있는 두 가지 wrapper를 제공한다.
@api_view
APIView
이 두 wrapper는 몇 개의 기능들을 제공하는데, 사용자의 view에서 Request
인스턴스를 확실하게 받을 수 있게 해주는 것과, 컨텐츠 협상을 수행할 수 있게 Response
객체에 컨텍스트를 추가해주는 것이다.