2. Django REST framework
1. Django REST framework란
- Django REST framework(이하 REST framework)는 웹 API 구축을 위한 툴킷이다.
2. Django REST framework 설치
- REST framework는 Python과 Django가 설치되어 있어야 한다.
- 먼저 다음과 같이 Django를 설치한다.
- 그리고 다음과 같이 REST framework를 설치한다.
pip install djangorestframework
pip install markdown # Markdown support for the browsable API.
pip install django-filter # Filtering support
- 다음의 패키지는 선택적으로 설치하면 된다.
1] PyYAML, uritemplate
- Schema generation support.
2] Markdown
- Markdown support for the browsable API.
3] Pygments
- Add syntax highlighting to Markdown processing.
4] django-filter
- Filtering support.
5] django-guardian
- Object level permissions support.
3. Django REST framework 적용
- Django 및 REST framework를 설치했다면 REST framework를 적용해야 한다.
- 그 방법은 기본적으로, 프로젝트의
settings.py
파일 내의INSTALLED_APPS
설정에"rest_framework"
를 추가한다.
- 만약 탐색 가능한 API(Browsable API)를 사용하는 경우 특정 애플리케이션의
urls.py
파일 아닌 프로젝트의 루트urls.py
파일 내의urlpatterns
리스트 변수에 다음과 같이 추가하면 된다.
4. Django REST framework 예시
- REST framework를 사용하여 간단한 API를 빌드하는 간단한 예를 살펴보자.
- 프로젝트 사용자에 대한 정보에 액세스하기 위한 읽기-쓰기 API를 만들 것이다.
- REST framework API에 대한 모든 전역 설정은
REST_FRAMEWORK
라는 단일 구성(Configuration) 딕셔너리에 저장된다. settings.py
파일에 다음의 코드를 추가한다.
settings.py
REST_FRAMEWORK = {
# Use Django's standard `django.contrib.auth` permissions,
# or allow read-only access for unauthenticated users.
"DEFAULT_PERMISSION_CLASSES": [
"rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly"
]
}
- 이제 API를 만들 준비가 되었다.
- 다음은 프로젝트의 루트
urls.py
파일에 다음의 코드를 작성한다.
urls.py
from django.urls import path, include
from django.contrib.auth.models import User
from rest_framework import routers, serializers, viewsets
# Serializers define the API representation.
class UserSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = User
fields = ["url", "username", "email", "is_staff"]
# ViewSets define the view behavior.
class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
# Routers provide an easy way of automatically determining the URL conf.
router = routers.DefaultRouter()
router.register(r"users", UserViewSet)
# Wire up our API using automatic URL routing.
# Additionally, we include login URLs for the browsable API.
urlpatterns = [
path("", include(router.urls)),
path("api-auth/", include("rest_framework.urls", namespace="rest_framework"))
]
- 위의 코드와 같이 작성한 후
http://127.0.0.1:8000/
에 접속하면 "사용자" API를 확인할 수 있다. - 로그인 컨트롤을 사용하면 시스템에서 사용자를 추가, 생성 및 삭제할 수도 있다.