[Django]API생성하기

Hyeo_Ni__·2024년 1월 1일
0

Django

목록 보기
6/12
post-thumbnail

📝 DRF(Django-REST-Framework)란?

Django 안에서 RESTful API 서버를 쉽게 만들게 도와주는 라이브러리다.

📚 필요 라이브러리

✍ 코드

$ pip install djangorestframework

Django REST Framework는 API를 구축할 수 있게 만들어 주기 때문에 꼭 필요하다.


📚 settings.py 설정

✍ 코드

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에 생성한 앱을 등록해야 사용할 수 있다.


📚 serializers.py 생성

✍ 코드

# 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형태로 바꿔주는 역할을 한다.


📚 views.py 수정

✍ 코드

# 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 응답으로 반환




📚 urls.py 수정 및 생성

✍ 코드

# 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/를 입력하면 실행되는 창을 볼 수 있다.

📢 Chrome 실행창

📢 Postman 실행창

profile
개발자로 성장 중 입니다.

0개의 댓글