Django REST Framework (DRF)

Django 위에서 REST API를 빠르게 구축하기 위한 라이브러리. Django의 ORM 모델을 JSON API로 노출하는 표준적인 방법이다.

핵심 개념

Serializer

Django 모델 ↔ JSON 변환을 담당한다. 유효성 검증도 여기서 처리한다.

from rest_framework import serializers
from .models import Product
 
class ProductSerializer(serializers.ModelSerializer):
    class Meta:
        model = Product
        fields = ["id", "name", "price", "description"]

ViewSet

CRUD 로직을 하나의 클래스로 묶는다. list, create, retrieve, update, destroy 액션을 자동 제공한다.

from rest_framework import viewsets
 
class ProductViewSet(viewsets.ModelViewSet):
    queryset = Product.objects.all()
    serializer_class = ProductSerializer

Router

ViewSet을 URL에 자동 매핑한다.

from rest_framework.routers import DefaultRouter
 
router = DefaultRouter()
router.register(r"products", ProductViewSet)
# → GET/POST /products/, GET/PUT/DELETE /products/{id}/

인증 & 권한

클래스역할
TokenAuthenticationAPI 토큰 기반 인증
SessionAuthenticationDjango 세션 기반
IsAuthenticated로그인 사용자만 허용
IsAdminUser관리자만 허용
DjangoModelPermissions모델별 CRUD 권한 매핑

Graphene과의 비교

DRF (REST)Graphene (GraphQL)
프로토콜REST — 리소스별 엔드포인트GraphQL — 단일 엔드포인트
데이터 페칭서버가 응답 형태 결정클라이언트가 필요한 필드만 요청
N+1 문제select_related/prefetch_relatedDataLoader 패턴
문서화OpenAPI/Swagger 자동 생성Schema introspection
학습 곡선낮음 — REST 개념만 알면 됨중간 — GraphQL 스펙 이해 필요
적합한 경우단순 CRUD, 공개 API, 모바일 BFF복잡한 관계형 데이터, 다양한 클라이언트

관련 문서