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_APPS에 rest_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_APPS에 rest_framework.authtoken을 추가한 후 마이그레이션을 실행합니다.
python manage.py migrate
이제 API에 인증을 추가하여 보다 안전하게 사용할 수 있습니다.
7. 마치며
이 글에서는 Django REST Framework를 사용하여 간단한 RESTful API를 만드는 방법을 설명하였습니다. DRF는 Django 기반 프로젝트에서 API를 손쉽게 구현할 수 있도록 도와주는 강력한 도구입니다. 앞으로 인증, 권한 관리, 성능 최적화 등의 추가적인 내용을 다루면서 더욱 깊이 있는 REST API 개발 방법을 소개하도록 하겠습니다.
'Python > Django' 카테고리의 다른 글
| Django 배포 방법 (AWS, Heroku, Docker 활용) (0) | 2025.11.11 |
|---|---|
| Django에서 비동기 처리를 위한 Celery 사용법 (0) | 2025.11.09 |
| Django 미들웨어 개념과 활용법 (0) | 2025.11.07 |
| Django에서 사용자 인증(Authentication) 시스템 구축하기 (0) | 2025.11.06 |
| Django에서 파일 업로드 처리 (ImageField, FileField) (0) | 2025.11.05 |