본문 바로가기
국회도서관 자료검색 서비스

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

by 유니네 라이브러리 2024. 8. 2.

django에서 REST framework를 사용하기

django에 API 서버를 구성하기 위해 REST framework를 설치한다.

  • django REST framework
    • django REST framework는 Web APIs 들을 만들기 위해 파워풀하고 유연한 툴킷이다.

☞ 정보 : https://www.django-rest-framework.org/

  • 이전에 설치한 가상환경으로 이동한다.
pubd_api % ls
bin    include    lib    pubdapi    pyvenv.cfg
pubd_api % source bin/activate
(pubd_api) pubd_api %
  • djangorestframework를 install 한다.
    • Successfully installed djangorestframework-3.15.2 나오면 성공
    • pip install djangorestframework 입력
(pubd_api) pubd_api % pip install djangorestframework 
Collecting djangorestframework
  Downloading djangorestframework-3.15.2-py3-none-any.whl.metadata (10 kB)
Requirement already satisfied: django>=4.2 in ./lib/python3.12/site-packages (from djangorestframework) (5.0.6)
Requirement already satisfied: asgiref<4,>=3.7.0 in ./lib/python3.12/site-packages (from django>=4.2->djangorestframework) (3.8.1)
Requirement already satisfied: sqlparse>=0.3.1 in ./lib/python3.12/site-packages (from django>=4.2->djangorestframework) (0.5.1)
Downloading djangorestframework-3.15.2-py3-none-any.whl (1.1 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.1/1.1 MB 2.6 MB/s eta 0:00:00
Installing collected packages: djangorestframework
Successfully installed djangorestframework-3.15.2
(pubd_api) pubd_api %

 

  • django filtering support 도 설치한다.
    • pip install django-filter 입력
(pubd_api) pubd_api % pip install django-filter
Collecting django-filter
  Downloading django_filter-24.2-py3-none-any.whl.metadata (5.1 kB)
Requirement already satisfied: Django>=4.2 in ./lib/python3.12/site-packages (from django-filter) (5.0.6)
Requirement already satisfied: asgiref<4,>=3.7.0 in ./lib/python3.12/site-packages (from Django>=4.2->django-filter) (3.8.1)
Requirement already satisfied: sqlparse>=0.3.1 in ./lib/python3.12/site-packages (from Django>=4.2->django-filter) (0.5.1)
Downloading django_filter-24.2-py3-none-any.whl (94 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 94.5/94.5 kB 2.4 MB/s eta 0:00:00
Installing collected packages: django-filter
Successfully installed django-filter-24.2
(pubd_api) pubd_api %
  • settings.py 파일 수정
    • INSTALLED_APPS에 'rest_framework', 추가
# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',
]
  • settings.py 에 REST_Framework 부분 insert
# 참조 URL
# https://www.django-rest-framework.org/api-guide/settings/
# https://www.django-rest-framework.org/api-guide/authentication/
# https://www.django-rest-framework.org/api-guide/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',
        #If not specified, this setting defaults to allowing unrestricted access:
        #'rest_framework.permissions.AllowAny',
    ],
}
  • urls.py 파일 수정
    • path('api/', include('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')),
]

 

마무리

REST Framework의 설치와 기본적인 세팅을 완료했다.

다음에는 Front-End와 통신을 위해 cors 크로스 도메인 오류를 해결하기 위한 세팅을 해본다.

 

☞ python, django 설치는 이전 글 참고

https://yuneenelife.tistory.com/entry/API-Server-django-python-Framework-설치-1

 

API Server django python Framework 설치 #1

python framework 인 django를 이용해서 API Server를 구축한다.API는 공공데이터 포털에서 제공하는 국회 도서관 자료검색 서비스를 이용한다. 먼저 작업을 시작하기에 앞서 작업을 진행할 폴더를 생성

yuneenelife.tistory.com