반응형
Django REST Framework(DRF)은 Django 웹 프레임워크를 기반으로 한 강력하고 유연한 도구로, RESTful 웹 API를 쉽게 구축할 수 있도록 도와줍니다. DRF는 다양한 기능과 특징을 제공하여 개발자들이 효율적이고 확장 가능한 API를 만들 수 있도록 합니다.
주요 특징
1. Serialization
- 데이터베이스 모델과 Python 데이터 구조를 JSON, XML 등의 다양한 포맷으로 변환할 수 있습니다.
- Serializer 클래스를 사용하여 데이터 검증과 변환을 간편하게 처리할 수 있습니다.
2. Authentication & Permissions
- 다양한 인증 방법(BasicAuth, TokenAuth, SessionAuth 등)을 지원합니다.
- 권한 관리를 통해 사용자별 접근 제어가 가능합니다.
3. Browsable API
- API를 웹 브라우저에서 시각적으로 탐색하고 테스트할 수 있는 기능을 제공합니다.
- 개발 및 디버깅 과정에서 매우 유용합니다.
4. Viewsets and Routers
- Viewset을 사용하여 코드 중복을 줄이고, CRUD 기능을 간편하게 구현할 수 있습니다.
- Router를 통해 URL 라우팅을 자동으로 처리할 수 있습니다.
5. Pagination
- 대량의 데이터를 효율적으로 처리할 수 있도록 페이지네이션 기능을 제공합니다.
- 기본 제공되는 다양한 페이지네이션 스타일(예: PageNumberPagination, LimitOffsetPagination 등)을 사용할 수 있습니다.
6. Filtering and Ordering
- 필터링, 검색, 정렬 기능을 쉽게 구현할 수 있도록 도와줍니다.
- Django의 ORM과 자연스럽게 통합되어 복잡한 쿼리도 간편하게 작성할 수 있습니다.
7. Throttling
- API 사용량을 제어하고 제한할 수 있는 기능을 제공합니다.
- 기본 제공되는 다양한 스로틀링 방법(예: UserRateThrottle, AnonRateThrottle 등)을 사용할 수 있습니다.
8. Versioning
- API의 버전 관리를 쉽게 할 수 있는 기능을 제공합니다.
- URL 패턴, 헤더 등을 통해 버전 관리를 할 수 있습니다.
Django REST Framework 소개
Django REST Framework는 Django의 강력한 기능을 확장하여 RESTful API 구축을 쉽게 만들어줍니다. 다음은 DRF의 일반적인 사용 예시입니다.
1. 설치 및 설정
pip install djangorestframework
# settings.py
INSTALLED_APPS = [
...
'rest_framework',
]
2. Serializer 클래스 작성
from rest_framework import serializers
from myapp.models import MyModel
class MyModelSerializer(serializers.ModelSerializer):
class Meta:
model = MyModel
fields = '__all__'
3. Viewset 작성
from rest_framework import viewsets
from myapp.models import MyModel
from myapp.serializers import MyModelSerializer
class MyModelViewSet(viewsets.ModelViewSet):
queryset = MyModel.objects.all()
serializer_class = MyModelSerializer
4. Router 설정
from rest_framework.routers import DefaultRouter
from myapp.views import MyModelViewSet
router = DefaultRouter()
router.register(r'mymodel', MyModelViewSet)
urlpatterns = [
...
path('api/', include(router.urls)),
]
반응형
'웹 개발 프레임워크 > Django REST framework 3.15' 카테고리의 다른 글
[DRF] 주요 기능별 클래스 및 함수 (0) | 2024.07.05 |
---|---|
[DRF] 프로젝트 구조 및 코딩컨벤션 (1) | 2024.07.05 |
[DRF] 버전별 특징 (0) | 2024.07.05 |
[DRF] 목차 (0) | 2024.07.05 |