국회도서관 자료검색 서비스

django REST Framework 로 API 서버 구성하기 #5

유니네 라이브러리 2024. 8. 2. 15:36

Django에서 API 서버를 만들기 위해 Django REST Framework(DRF)를 사용한다.

DRF는 웹 API를 쉽게 구축할 수 있도록 지원하는 강력하고 유연한 툴킷이다.

 

1. Django REST Framework란?

 

Django REST Framework(DRF)는 Django에서 API 개발을 위한 가장 널리 사용되는 라이브러리이다.

  • 쉽고 강력한 API 설계 가능
  • JSON 기반의 직렬화(Serialization) 지원
  • 세션 및 토큰 기반 인증(Authentication) 제공
  • 권한(Permissions) 및 필터링(Filter) 기능 내장

📌 공식 문서: Django REST Framework

 

2. 가상환경 활성화 및 패키지 설치

 

📌 1) 가상환경 활성화

 

먼저, Django 프로젝트의 가상환경을 활성화합니다.

 

Mac/Linux (bash/zsh)

source venv/bin/activate

 

Windows (cmd)

venv\Scripts\activate

 

Windows (PowerShell)

venv\Scripts\Activate.ps1

 

가상환경이 정상적으로 활성화되면 (venv) 같은 프롬프트가 나타난다.

예제에서는 (pubd_api)라는 가상환경을 사용하고 있다.

 

📌 2) Django REST Framework 설치

 

다음 명령어를 실행하여 djangorestframework를 설치한다.

pip install djangorestframework

 

설치가 정상적으로 완료되면 아래와 같은 메시지가 출력된다.

Successfully installed djangorestframework-3.15.2

 

📌 3) Django Filter 라이브러리 설치

 

필터링 기능을 추가하기 위해 django-filter 패키지도 설치한다.

pip install django-filter

 

설치가 정상적으로 완료되면 아래와 같은 메시지가 출력된다.

Successfully installed django-filter-24.2

 

3. Django 설정 (settings.py 수정)

 

📌 1) INSTALLED_APPS에 ‘rest_framework’ 추가

 

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 추가
]

 

📌 2) REST Framework 설정 추가

 

settings.py 하단에 REST Framework 관련 설정을 추가한다.

 

📌 참고 문서:

Django REST Framework Settings

Authentication

Permissions

 

REST_FRAMEWORK = {
    'DEFAULT_RENDERER_CLASSES': [
        'rest_framework.renderers.JSONRenderer',
        'rest_framework.renderers.BrowsableAPIRenderer',
    ],
    'DEFAULT_PARSER_CLASSES': [
        'rest_framework.parsers.JSONParser',
        'rest_framework.parsers.FormParser',
        'rest_framework.parsers.MultiPartParser'
    ],
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.SessionAuthentication',
        'rest_framework.authentication.BasicAuthentication'
    ],
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.IsAuthenticated',
        # 모든 사용자에게 API를 공개하려면 아래 주석을 해제한다.
        # 'rest_framework.permissions.AllowAny',
    ],
}

 

DEFAULT_PERMISSION_CLASSES 기본값이 IsAuthenticated로 설정되어 있어, 인증된 사용자만 API를 사용할 수 있다.

만약 모든 사용자(비로그인 포함)가 API를 사용할 수 있도록 하려면 'rest_framework.permissions.AllowAny'를 설정한다.

 

4. URL 설정 (urls.py 수정)

 

Django의 urls.py 파일을 열어, rest_framework.urls를 추가한다.

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/', include('rest_framework.urls')),  # Django REST Framework URL 추가
]

 

이제 Django REST Framework의 기본 API 페이지를 사용할 수 있다.

브라우저에서 http://localhost:8000/api/로 접속하면 DRF의 기본 제공 로그인 화면을 볼 수 있다.

 

5. 서버 재시작 및 테스트

 

설정을 적용하기 위해 Django 서버를 다시 실행한다.

python manage.py runserver

 

이제 API 서버가 정상적으로 동작하는지 확인해 본다.

 

📌 API 접속 테스트

  1. 브라우저에서 http://localhost:8000/api/ 로 이동
  2. Django REST Framework의 기본 제공 로그인 화면 확인
  3. 관리자 계정으로 로그인 후 API 기능 확인

6. 마무리

 

지금까지 Django REST Framework를 설치하고 API 서버를 구성하는 기본 설정을 완료했다.

 

정리하면?

✔️ djangorestframework 패키지 설치

✔️ django-filter 패키지 설치

✔️ settings.py 설정 추가

✔️ urls.py에 API 경로 추가

✔️ Django 서버 재시작 후 테스트

 

📌 다음 글에서는?

다음 글에서는 CORS(Cross-Origin Resource Sharing) 설정을 추가하여,

프론트엔드(Vue.js, React)와 Django 백엔드가 원활하게 통신할 수 있도록 설정해 본다. 🚀

 

👉 [다음 글] Django CORS 크로스 도메인 오류 해결