Django 안에서 RESTful API 서버를 쉽게 만들게 도와주는 라이브러리다.
$ pip install djangorestframework
Django REST Framework는 API를 구축할 수 있게 만들어 주기 때문에 꼭 필요하다.
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'api', # 생성한 앱 이름
'rest_framework',
]
INSTALLED_APPS에 생성한 앱을 등록해야 사용할 수 있다.
# api/serializers.py
from rest_framework.serializers import ModelSerializer
from .models import Testapi
class TestDataSerializer(ModelSerializer):
class Meta:
model = Testapi # 테이블 명
fields = '__all__' # 사용할 필드(열)
serializer는 직렬화를 의미한다.
django에 저장되어 있는 모델 인스턴스를 REST API에서 사용하는 JSON형태로 바꿔주는 역할을 한다.
# api/views.py
# HTTP 응답을 생성하고 반환
from rest_framework.response import Response
# 해당 함수가 특정 HTTP 요청 메서드를 처리
from rest_framework.decorators import api_view
from .models import Testapi
from .serializers import TestAPISerializer
@api_view(['GET'])
def getTestAPI(request):
data = Testapi.objects.all()
serializer = TestAPISerializer(data, many=True)
return Response(serializer.data)
코드 | 설명 |
---|---|
@api_view(['GET']) | API 뷰를 정의, HTTP 중 GET 요청을 처리한다. |
Testapi.objects.all() | Testapi 모델에서 모든 데이터를 가져와 저장 |
TestAPISerializer(data, many=True) | 데이터를 JSON형식으로 변환하여 직렬화 |
many=True | 여러 객체를 직렬화할 때 사용 |
many=False | 단일 객체를 직렬화할 때 사용 |
return Response(serializer.data) | 직렬화된 데이터를 HTTP 응답으로 반환 |
# project/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('api/', include('api.urls'))
]
include를 사용하여 Django 애플리케이션을 모듈화하고 다른 애플리케이션에서 정의된 URL 패턴을 현재 애플리케이션에 재사용할 수 있다.
이를 통해 url을 별로 관리할 수 있도록 도와준다.
# api/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('getapi/', views.getTestAPI)
]
'testapi/' 경로로 들어오는 요청은 'views.getTestAPI' 함수를 호출한다.
이제 서버를 실행시킨 후 주소창에 localhost:8000/api/testapi/를 입력하면 실행되는 창을 볼 수 있다.