Python/Django

Django에서 REST API 만들기 (Django REST Framework 소개 및 기본 사용법)

임베디드 친구 2025. 11. 8. 16:07
반응형

Django에서 REST API 만들기 (Django REST Framework 소개 및 기본 사용법)

1. 들어가며

Django는 강력한 웹 프레임워크로, 웹 애플리케이션을 빠르게 개발할 수 있도록 도와줍니다. 특히, Django REST Framework(DRF)를 사용하면 Django 기반으로 RESTful API를 쉽게 만들 수 있습니다. 이번 글에서는 Django REST Framework의 기본 개념과 사용법을 살펴보고, 간단한 REST API를 만드는 예제를 제공하겠습니다.


2. Django REST Framework란?

Django REST Framework(DRF)는 Django 기반으로 RESTful API를 쉽게 개발할 수 있도록 도와주는 강력한 라이브러리입니다. 다음과 같은 주요 기능을 제공합니다.

  • 직관적인 API 설계: Serializer와 ViewSet을 사용하여 API 설계를 간소화할 수 있습니다.
  • 권한 및 인증 관리: 기본 제공되는 인증 및 권한 시스템을 통해 보안성을 강화할 수 있습니다.
  • Browsable API: 개발자가 API를 쉽게 테스트할 수 있도록 웹 브라우저에서 바로 API를 확인할 수 있는 기능을 제공합니다.
  • Throttling 및 Pagination 지원: API의 성능을 고려한 기능이 기본적으로 포함되어 있습니다.

3. Django REST Framework 설치 및 설정

먼저, Django REST Framework를 설치해야 합니다. 아래 명령어를 실행하여 설치를 진행합니다.

pip install djangorestframework

설치가 완료되면, Django 프로젝트의 settings.py 파일을 수정하여 INSTALLED_APPSrest_framework를 추가합니다.

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',  # Django REST Framework 추가
]

이제 Django REST Framework를 사용할 준비가 되었습니다.


4. 간단한 REST API 만들기

4.1 모델 생성

먼저, 간단한 Post 모델을 만들어 보겠습니다.

from django.db import models

class Post(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.title

위 모델을 마이그레이션하여 데이터베이스에 반영합니다.

python manage.py makemigrations
python manage.py migrate

4.2 Serializer 생성

Serializer는 Django의 모델을 JSON 형식으로 변환해주는 역할을 합니다.

from rest_framework import serializers
from .models import Post

class PostSerializer(serializers.ModelSerializer):
    class Meta:
        model = Post
        fields = '__all__'

4.3 ViewSet 및 URL 설정

Django REST Framework에서는 ViewSet을 사용하여 API 엔드포인트를 간단하게 정의할 수 있습니다.

from rest_framework import viewsets
from .models import Post
from .serializers import PostSerializer

class PostViewSet(viewsets.ModelViewSet):
    queryset = Post.objects.all()
    serializer_class = PostSerializer

이제 urls.py 파일을 수정하여 API 엔드포인트를 추가합니다.

from django.urls import path, include
from rest_framework.routers import DefaultRouter
from .views import PostViewSet

router = DefaultRouter()
router.register(r'posts', PostViewSet)

urlpatterns = [
    path('api/', include(router.urls)),
]

이제 http://127.0.0.1:8000/api/posts/ 엔드포인트를 통해 CRUD API를 사용할 수 있습니다.


5. API 테스트하기

5.1 API 서버 실행

API가 정상적으로 동작하는지 확인하기 위해 Django 개발 서버를 실행합니다.

python manage.py runserver

5.2 Postman 또는 브라우저에서 API 확인

Django REST Framework는 Browsable API를 제공하므로, 웹 브라우저에서 API를 테스트할 수 있습니다. http://127.0.0.1:8000/api/posts/로 이동하면 데이터 조회, 생성, 수정, 삭제 기능을 수행할 수 있습니다.

또한, Postman을 사용하여 HTTP 요청을 직접 보낼 수도 있습니다.


6. 추가 기능 (인증 및 권한 설정)

Django REST Framework는 다양한 인증 및 권한 설정을 지원합니다. 예를 들어, API에 인증이 필요한 경우 settings.py에 다음과 같이 추가할 수 있습니다.

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework.authentication.SessionAuthentication',
        'rest_framework.authentication.TokenAuthentication',
    ),
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAuthenticated',
    )
}

이렇게 설정하면 API를 사용하려면 사용자 인증이 필요합니다. Token 기반 인증을 사용하려면 다음 명령어를 실행하여 authtoken 패키지를 활성화해야 합니다.

pip install djangorestframework.authtoken

그리고 INSTALLED_APPSrest_framework.authtoken을 추가한 후 마이그레이션을 실행합니다.

python manage.py migrate

이제 API에 인증을 추가하여 보다 안전하게 사용할 수 있습니다.


7. 마치며

이 글에서는 Django REST Framework를 사용하여 간단한 RESTful API를 만드는 방법을 설명하였습니다. DRF는 Django 기반 프로젝트에서 API를 손쉽게 구현할 수 있도록 도와주는 강력한 도구입니다. 앞으로 인증, 권한 관리, 성능 최적화 등의 추가적인 내용을 다루면서 더욱 깊이 있는 REST API 개발 방법을 소개하도록 하겠습니다.

반응형