본문 바로가기
Python 웹 프레임워크/Django REST framework 3.15

[DRF] 주요 기능별 클래스 및 함수

by cogito21_python 2024. 7. 5.
반응형

1. 시리얼라이저 (Serializers)

  • Serializer: 기본 시리얼라이저 클래스
  • ModelSerializer: 모델 기반 시리얼라이저
  • HyperlinkedModelSerializer: 하이퍼링크 기반 시리얼라이저

주요 메서드

  • to_representation(): 객체를 직렬화
  • to_internal_value(): 데이터를 역직렬화
  • is_valid(): 데이터 유효성 검사
  • save(): 객체 저장

2. 뷰 (Views)

  • APIView: 기본 API 뷰 클래스
  • GenericAPIView: 일반적인 API 동작을 위한 뷰
  • ViewSet: CRUD 작업을 위한 뷰셋
  • ModelViewSet: 모델 기반 CRUD 작업을 위한 뷰셋

주요 믹스인

  • ListModelMixin: 목록 조회
  • RetrieveModelMixin: 단일 객체 조회
  • CreateModelMixin: 객체 생성
  • UpdateModelMixin: 객체 수정
  • DestroyModelMixin: 객체 삭제

3. 라우터 (Routers)

  • SimpleRouter: 기본 라우터
  • DefaultRouter: 루트 API 뷰를 포함한 라우터

주요 메서드

  • register(): 뷰셋 등록

4. 인증 (Authentication)

  • BasicAuthentication: 기본 인증
  • TokenAuthentication: 토큰 기반 인증
  • SessionAuthentication: 세션 기반 인증
  • JSONWebTokenAuthentication: JWT 인증 (서드파티)

5. 권한 (Permissions)

  • IsAuthenticated: 인증된 사용자만 허용
  • IsAdminUser: 관리자만 허용
  • AllowAny: 모든 사용자 허용
  • IsAuthenticatedOrReadOnly: 인증된 사용자는 모든 동작, 비인증 사용자는 읽기만 허용

주요 메서드

  • has_permission(): 권한 확인

6. 필터링 (Filtering)

  • DjangoFilterBackend: Django의 필터링 기능 사용
  • SearchFilter: 검색 기능
  • OrderingFilter: 정렬 기능

7. 페이지네이션 (Pagination)

  • PageNumberPagination: 페이지 번호 기반 페이지네이션
  • LimitOffsetPagination: 제한과 오프셋 기반 페이지네이션
  • CursorPagination: 커서 기반 페이지네이션

8. 예외 처리 (Exception Handling)

  • APIException: 기본 API 예외 클래스
  • NotFound: 404 에러
  • PermissionDenied: 403 에러
  • ValidationError: 400 에러 (유효성 검사 실패)

9. 콘텐츠 협상 (Content Negotiation)

  • JSONRenderer: JSON 렌더링
  • BrowsableAPIRenderer: 브라우저블 API 렌더링
  • JSONParser: JSON 파싱
  • FormParser: 폼 데이터 파싱

10. 스키마 생성 (Schema Generation)

  • AutoSchema: 자동 스키마 생성
  • coreapi.Field: API 필드 정의
  • coreapi.Link: API 엔드포인트 정의

11 .테스트 (Testing)

  • APIRequestFactory: API 요청 팩토리
  • APIClient: API 클라이언트
  • APITestCase: API 테스트 케이스

12. 응답 (Responses)

  • Response: DRF의 기본 응답 클래스
    주요 속성 및 메서드:
  • data: 응답 데이터
  • status: HTTP 상태 코드
  • content_type: 콘텐츠 타입

13. 상태 코드 (Status Codes)

  • HTTP_200_OK
  • HTTP_201_CREATED
  • HTTP_204_NO_CONTENT
  • HTTP_400_BAD_REQUEST
  • HTTP_401_UNAUTHORIZED
  • HTTP_403_FORBIDDEN
  • HTTP_404_NOT_FOUND
  • HTTP_405_METHOD_NOT_ALLOWED

14. 필드 (Fields)

  • CharField, IntegerField, BooleanField 등: 기본 필드 타입
  • SerializerMethodField: 커스텀 메서드로 계산되는 필드
  • HyperlinkedIdentityField: 하이퍼링크 관계를 표현하는 필드

15. 관계 필드 (Relation Fields)

  • PrimaryKeyRelatedField: 기본 키를 사용한 관계 표현
  • StringRelatedField: str 메서드를 사용한 관계 표현
  • HyperlinkedRelatedField: 하이퍼링크를 사용한 관계 표현

16. 유효성 검사 (Validation)

  • validate_: 특정 필드 유효성 검사 메서드
  • validate(): 전체 데이터 유효성 검사 메서드

17. 스로틀링 (Throttling)

  • AnonRateThrottle: 익명 사용자에 대한 요청 제한
  • UserRateThrottle: 인증된 사용자에 대한 요청 제한
  • ScopedRateThrottle: 특정 범위에 대한 요청 제한

18. 버전 관리 (Versioning)

  • URLPathVersioning: URL 경로를 통한 버전 관리
  • NamespaceVersioning: URL 네임스페이스를 통한 버전 관리
  • AcceptHeaderVersioning: Accept 헤더를 통한 버전 관리

19. 메타데이터 (Metadata)

  • SimpleMetadata: 기본 메타데이터 클래스
  • determine_metadata(): 메타데이터 결정 메서드

20. 커스텀 액션 (Custom Actions)

  • @action 데코레이터: 뷰셋에 커스텀 액션 추가

21. 파일 업로드 (File Upload)

  • FileField, ImageField: 파일 및 이미지 필드
  • parsers.MultiPartParser: 멀티파트 폼 데이터 파싱

22. 캐싱 (Caching)

  • @method_decorator(cache_page()): 뷰 레벨 캐싱
  • CacheOps: 모델 레벨 캐싱 (서드파티)

23. 비동기 지원 (Asynchronous Support)

  • AsyncAPIView: 비동기 API 뷰
  • async_to_sync(): 비동기 코드를 동기 코드로 변환

24. OpenAPI (Swagger) 스키마

  • get_schema_view(): 스키마 뷰 생성
  • AutoSchema: 자동 스키마 생성 클래스

25. 국제화 및 지역화 (i18n and l10n)

  • ugettext_lazy: 번역 문자열 정의
  • LocaleMiddleware: 로케일 설정 미들웨어

26. 보안 (Security)

  • CsrfViewMiddleware: CSRF 보호
  • XFrameOptionsMiddleware: 클릭재킹 방지

27. 커스텀 예외 핸들러 (Custom Exception Handlers)

  • exception_handler(): 전역 예외 처리기

28. 성능 최적화 (Performance Optimization)

  • select_related(): 관련 객체 미리 로드
  • prefetch_related(): 역참조 관계 미리 로드
  • only(): 특정 필드만 조회

29. 커스텀 필드 (Custom Fields)

  • create_field(): 커스텀 시리얼라이저 필드 생성
  • to_internal_value()와 to_representation() 오버라이딩

30. 동적 시리얼라이저 (Dynamic Serializers)

  • SerializerMethodField를 사용한 동적 필드 생성
  • 런타임에 시리얼라이저 클래스 생성

31. 중첩 시리얼라이저 (Nested Serializers)

  • 복잡한 데이터 구조를 위한 중첩 시리얼라이저 사용

32. 커스텀 페이지네이션 (Custom Pagination)

  • BasePagination 상속으로 커스텀 페이지네이션 클래스 생성

33. 조건부 필드 (Conditional Fields)

  • 특정 조건에 따라 필드를 포함/제외하는 로직 구현

34. API 버전 관리 고급 기법

  • 버전별 다른 시리얼라이저/뷰 사용
  • 버전 간 마이그레이션 전략

35. 트랜잭션 관리 (Transaction Management)

  • @transaction.atomic 데코레이터 사용
  • with transaction.atomic() 컨텍스트 매니저 활용

36. 비동기 작업 (Asynchronous Tasks)

  • Celery와의 통합
  • 백그라운드 작업 처리

37. 실시간 기능 (Real-time Features)

  • Channels를 사용한 WebSocket 지원
  • 실시간 알림 구현

38. GraphQL 통합

  • Graphene-Django를 사용한 GraphQL API 구현

39. API 문서화 고급 기법

  • drf-yasg를 사용한 상세한 API 문서 생성
  • 커스텀 스키마 생성

40. 대규모 데이터 처리

  • 스트리밍 응답 구현
  • 대용량 파일 업로드/다운로드 처리

41. API 게이트웨이 통합

  • Kong, Tyk 등의 API 게이트웨이와 통합

42. 마이크로서비스 아키텍처

  • DRF를 사용한 마이크로서비스 설계 및 구현

43. 커스텀 관리 명령어

  • Django 관리 명령어를 사용한 API 관련 작업 자동화

44. API 모니터링 및 로깅

  • 커스텀 미들웨어를 사용한 API 호출 로깅
  • 성능 모니터링 도구 통합

45. 테스트 고급 기법

  • 팩토리를 사용한 테스트 데이터 생성
  • 모의 객체(Mock)를 사용한 외부 서비스 테스트

46. 국제화 고급 기법

  • 동적 번역 처리
  • 다국어 콘텐츠 관리

47. API 캐싱 전략

  • 세분화된 캐싱 정책 구현
  • Redis를 사용한 분산 캐싱

48. 사용자 정의 인증 체계

  • 커스텀 토큰 생성 및 검증
  • 다중 인증 방식 지원

49. Rate Limiting 고급 기법

  • IP 기반, 사용자 기반, 엔드포인트 기반 제한 구현
  • 동적 Rate Limiting 정책

50. 데이터베이스 최적화

  • 쿼리 최적화 기법
  • 인덱스 전략
반응형