[장고] DRF로 REST API 구현하기: 초보자를 위한 단계별 가이드
장고(Django)로 REST API를 구현하는 과정은 여러 단계로 나뉘며, 각 단계는 서로 연결되어 있습니다. 초보 개발자가 이해하기 쉽게 프로젝트 환경 설정부터 REST API의 구현까지 하나씩 자세히 설명하겠습니다.
프로젝트 환경 설정
프로젝트 폴더 생성
먼저, 프로젝트를 저장할 폴더를 만들어야 합니다. 터미널(혹은 명령 프롬프트)을 열고 다음 명령어를 입력하세요:
$ mkdir mysite_project
$ cd mysite_project
위 명령어는 mysite_project
라는 폴더를 만들고 그 폴더로 이동하는 명령어입니다.
가상환경 만들기
가상환경은 프로젝트마다 독립적인 파이썬 환경을 제공하여 패키지 관리를 쉽게 합니다. 다음 명령어로 가상환경을 만듭니다:
$ python3 -m venv env
$ source env/bin/activate
Windows에서는 source env/bin/activate
대신 다음 명령어를 사용합니다:
env\Scripts\activate
장고와 DRF(Django Rest Framework) 설치
이제 장고와 DRF를 설치합니다. 가상환경이 활성화된 상태에서 다음 명령어를 실행하세요:
$ pip install django djangorestframework
새 프로젝트 & 앱 생성하기
장고 프로젝트와 앱을 생성합니다. 터미널에서 다음 명령어를 실행하세요:
$ django-admin startproject mysite$ cd mysite
$ python3 manage.py startapp api
이 명령어들은 mysite
라는 프로젝트와 api
라는 앱을 생성합니다.
모델 생성
이제 데이터베이스에 저장할 모델을 정의합니다. api/models.py
파일을 열고 다음 코드를 추가하세요:
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=50)
content = models.TextField()
def __str__(self):
return self.title
Post
모델은 제목(title
)과 내용(content
)을 저장하는 모델입니다.
모델 마이그레이션
모델을 데이터베이스에 반영하기 위해 마이그레이션을 수행합니다:
$ python3 manage.py makemigrations$ python3 manage.py migrate
API 변환 클래스 - 시리얼라이저 만들기
모델 데이터를 JSON 등으로 변환하기 위해 시리얼라이저를 만듭니다. api/serializers.py
파일을 만들고 다음 코드를 추가하세요:
from rest_framework import serializersfrom .models import Post
class PostSerializer(serializers.ModelSerializer):
class Meta:
model = Post
fields = '__all__'
Views 작성
이제 API 뷰를 작성합니다. api/views.py
파일을 열고 다음 코드를 추가하세요:
from rest_framework import genericsfrom .models import Post
from .serializers import PostSerializer
class PostListAPIView(generics.ListCreateAPIView):
queryset = Post.objects.all()
serializer_class = PostSerializer
이 뷰는 포스트 목록을 가져오고 새 포스트를 생성할 수 있는 API 엔드포인트를 만듭니다.
URL 설정
API 엔드포인트를 설정하기 위해 URL을 연결해야 합니다. 먼저 루트 mysite/urls.py
파일을 수정합니다:
from django.urls import include, path
urlpatterns = [
# 기존의 다른 경로들
path('api/', include('api.urls')),
]
그리고 api/urls.py
파일을 만들어 다음 코드를 추가하세요:
from django.urls import pathfrom .views import PostListAPIView
urlpatterns = [
path('post/list/', PostListAPIView.as_view()),
]
서버 실행
모든 설정이 완료되었습니다. 이제 서버를 실행하여 API를 테스트할 수 있습니다:
$ python3 manage.py runserver
웹 브라우저를 열고 http://127.0.0.1:8000/api/post/list/
에 접속하면 포스트 목록을 확인할 수 있습니다. 데이터를 POST 요청으로 보내면 새로운 포스트를 생성할 수 있습니다.