데이터 분석 기술 블로그

Django에 대하여(31)_DRF - GET 본문

백엔드

Django에 대하여(31)_DRF - GET

데이터분석가 이채은 2024. 5. 19. 21:00

1. GET

1-1. GET - List

  • 게시글 데이터 목록 조회하기
  • 게시글 데이터 목록을 제공하는 ArticleListSerializer 정의
  • serializers.py의 위치나 파일명은 자유롭게 작성 가능합니다.
# articles/serializers.py

from rest_framework import serializers
from .models import Article

class ArticleListSerializer(serializers.ModelSerializer):
    class Meta:
        model = Article
        fields = ('id', 'title', 'content',)

  • ModelSerialzier은 Django 모델과 연결된 Serializer 클래스입니다.
  • url 및 view 함수를 작성합니다.
# articles/urls.py

urlpatterns = [
    path('articles/', views.article_list),
]
# articles/viws.py

from rest_framework.response import Response
from rest_framework.decorators import api_view

from .models import Article
from .serializers import ArticleListSerializer


@api_view(['GET'])
def article_list(request):
    articles = Article.objects.all()
    serializer = ArticleListSerializer(articles, many=True)
    return Response(serializer.data)

http://127.0.0.1:8000/api/v1/articles/ 응답 확인


1-2. 이전 view 함수와의 비교

똑같은 데이터를 HTML에 출력되도록 페이지와 함께 응답했던 과거의 view 함수, JSON 데이터로 serialization 하여 페이지 없이 응답하는 현재의 view 함수입니다.


1-3. 'api_view' decorator

  • DRF view 함수에서는 필수로 작성되며 view 함수를 실행하기 전 HTTP 메서드를 확인
  • 기본적으로 GET 메서드만 허용되며 다른 메서드 요청에 대해서는 405 Method Not Allowed로 응답
  • DRF view 함수가 응답해야 하는 HTTP 메서드 목록을 작성

1-4. GET - Detail

  • 단일 게시글 데이터 조회하기
  • 각 게시글의 상세 정보를 제공하는 ArticleSerializer 정의
# articles/serializers.py

class ArticleSerializer(serializers.ModelSerializer):
    class Meta:
        model = Article
        fields = '__all__'

  • url 및 view 함수 작성
# articles/urls.py

ulrpatterns = [
    ...
    path('articles/<int:article_pk>/', views.article_detail),
]
# articles/views.py

from .serializers import ArticleListSerializer, ArticleSerializer


@api_view(['GET'])
def article_detail(request, article_pk):
    article = Article.objects.get(pk=article_pk)
    serializer = ArticleSerailizer(article)
    return Response(serializer.data)

http://127.0.0.1:8000/api/v1/articles/1/ 응답 확인