REST 기반 웹 서비스 작업을 수행하는 경우 request.POST를 무시해야 합니다.
— 말콤 트레디닉, 장고 개발자 그룹
.data
request.data는 request body의 분석된 내용을 반환합니다. 이는 request.POST 및 request.FILES과 유사하지만 다음 부분을 제외하고 비슷합니다.
- 파일 및 비파일 입력을 포함하여 모든 구문 분석된 내용이 포함됩니다
- POST 이외의 HTTP 메서드의 내용을 구문 분석할 수 있도록 지원하므로 PUT 및 PATCH 요청의 내용에 액세스 할 수 있습니다
- form data만 지원하는 것이 아닌 REST framework의 유연한 요청 파싱을 지원합니다. 들어오는 form data를 처리하는 방식과 비슷하게 JSON 데이터 또한 처리할 수 있습니다.
.query_params
request.query_params는 request.GET과 같습니다 더 명확한 코드를 위해 django standard 인 request.GET보다 query_params를 권장합니다. HTTP method에는 많은 query parameters가 들어오기에 우리의 코드베이스를 좀더 깔끔하게 할 수 있습니다!
.parsers
APIView class나 @API_view 데코레이터는 자동으로 인스턴스 목록에 설정되도록 합니다. 뷰에 설정된 parser_classes를 기반으로 하거나 DEFAULT_PARSER_CLASSES 설정을 기본으로 합니다. 일반적으로 이 속성에 엑세스할 필요는 없습니다.
참고: 잘못된 형식의 콘텐츠를 전송해서 request.data에 액세스시 ParserError가 발생할 수 있습니다.
기본적으로 REST 프레임워크의 APIView 클래스 또는 @api_view 데코레이터가 오류를 감지하고 400 Bad Request응답을 반환합니다
분석할 수 없는 내용의 요청을 전송하면 UnsupportedMediaType 예외가 발생하며 415 Unsupported Media Type 에러를 응답합니다
.Authentication
REST framework는 유연한 authentication 기능을 제공합니다
- 각각의 API에 다른 authentication을 사용합니다
- 여러 authentication 사용을 지원합니다
- 수신 요청과 관련된 사용자 및 토큰을 모두 제공합니다
.user
request.user은 일반적으로 django.contrib.auth.models의 인스턴스를 반환합니다
요청이 인증되지 않은 사용자의 경우 django.contrib.auth.models.AnonymousUser의 인스턴스 입니다
.auth
request.auth는 추가 인증 context를 반환합니다.
request.auth는 정확한 동작은 사용되는 인증 정책에 따라 다르지만 일반적으로 요청이 인정된 토큰의 인스턴스 일 수 있습니다. 요청이 인증되지 않았거나 추가 context가 없는 경우 request.auth의 기본값은 None입니다.
.authenticators
parser과 비슷하게 APIView 또는 @api_view 데코레이터 뷰에 설정된 authentication_classes 를 기반으로 또는 DEFAULT_AUTHENTICATORS 설정을 기반으로 이 속성이 인증 인스턴스 목록에 자동으로 설정되도록 합니다.
일반적으로 이 속성에 액세스 할 필요가 없습니다.
참고: .user 또는 .auth 속성을 호출 시 발생하는 WrappedAttributeError 가 표시될 수 있습니다. 이러한 오류는 외부에 액세스가 되기 위해서 다른 예외 유형으로 다시 지정해야 합니다. Python은 AttributeError가 인증자에서 발생을 인식하지 못하고 .user 또는 .auth 속성이 없다고 생각합니다.
.Browser enhancements
REST framework는 브라우저 기반 PUT, PATCH 및 DELETE 양식과 같은 몇 가지 브라우저 향상 기능을 지원합니다.
.method
request.method 요청에는 요청의 HTTP 메서드의 대문자 문자열을 반환합니다
.content-type
request.content_type, 은 요청 부분의 media 유형을 나타내는 문자열 개체를 반환하거나 미디어 유형이 제공되지 않은 경우 빈 문자열을 반환합니다.
일반적으로 REST framework 기본 요청을 분석하기 때문에 요청 내용 유형에 직접 액세스 할 필요는 없습니다.
그러나 요청 내용에 액세스 하는 경우 .content_type 속성을 사용하는 것보다 request.META.get('HTTP_CONTENT_TYPE')을 먼저 사용해야 합니다. 이 속성은 브라우저 기반의 비형식 내용을 지원하기 때문입니다.
.stream
request.stream은 요청 본문의 내용을 나타내는 스트림을 반환합니다.
일반적으로 REST framework 기본 요청을 분석하기 때문에 요청 내용 유형에 직접 액세스 할 필요는 없습니다.
.Standard HttpRequest attributes
REST 프레임워크의 Request는 django의 HttpRequest를 상속받기에 다른 모든 표준 속성과 메서드도 사용 할 수 있습니다.
'Django > restframework' 카테고리의 다른 글
DRF docs API Guide Class-based Views (1) | 2024.01.15 |
---|---|
DRF docs API Guide Responses (0) | 2024.01.12 |
DRF tutorial - 3 Class-based Views (0) | 2024.01.02 |
DRF tutorial -2 requests and responses (0) | 2024.01.02 |
DRF tutorial -1 serialization (0) | 2023.12.28 |