반응형
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. 데이터베이스 최적화
- 쿼리 최적화 기법
- 인덱스 전략
반응형
'웹 개발 프레임워크 > Django REST framework 3.15' 카테고리의 다른 글
[DRF] 프로젝트 구조 및 코딩컨벤션 (1) | 2024.07.05 |
---|---|
[DRF] 버전별 특징 (0) | 2024.07.05 |
[DRF] Django REST Framework 특징 및 소개 (0) | 2024.07.05 |
[DRF] 목차 (0) | 2024.07.05 |