[Series1. DashBoard 만들기] - 10. API View 테스트 (1)

django_apps·2021년 9월 22일
0

django apps

목록 보기
10/17
post-thumbnail

유저등록 GET API 테스트 하기

이번 포스팅부터는 본격적으로 유저에 대해 CRUD API를 작성해보도록 하자.

처음은 유저조회 부분이다. 즉, GET API 테스트를 해보자.

일단 PostUser Model에 대한 Serializer 를 개발한다.

velog_series_01/dashboard/dashboard_core/serializers.py 파일을 열어 아래와 같이 추가한다.

from rest_framework import serializers

from dashboard_core.models import Post, PostUser

class PostSerializer(serializers.ModelSerializer):
  title = serializers.CharField()
  contents = serializers.StringRelatedField()
  created_at = serializers.DateTimeField()

  class Meta:
    model = Post
    fields = "__all__"

class PostUserSerializer(serializers.ModelSerializer):
  username = serializers.CharField()

  class Meta:
    model = PostUser
    fields = "__all__"

그리고 같은 위치의 views.py 파일에 CRUD API가 포함되어 있는 ModelViewSet 클래스를 상속하여 아래와 같이 추가해준다.

from rest_framework.viewsets import ModelViewSet
from rest_framework.permissions import IsAuthenticatedOrReadOnly
from dashboard_core.models import Post, PostUser
from dashboard_core.serializers import PostSerializer, PostUserSerializer

# Create your views here.
class PostViewSet(ModelViewSet):
  queryset = Post.objects.all()
  serializer_class = PostSerializer
  permission_classes = [IsAuthenticatedOrReadOnly]

class PostUserViewSet(ModelViewSet):
  queryset = PostUser.objects.all()
  serializer_class = PostUserSerializer

위 작업으로, CRUD API가 자동으로 추가된다.
이해가 되지 않는다면, ModelViewSet 클래스를 살펴보자.

class ModelViewSet(mixins.CreateModelMixin,
                   mixins.RetrieveModelMixin,
                   mixins.UpdateModelMixin,
                   mixins.DestroyModelMixin,
                   mixins.ListModelMixin,
                   GenericViewSet):
    """
    A viewset that provides default `create()`, `retrieve()`, `update()`,
    `partial_update()`, `destroy()` and `list()` actions.
    """
    pass

위에서 보다시피

C(mixins.CreateModelMixin),
R(mixins.RetrieveModelMixin, mixins.ListModelMixin),
U(mixins.UpdateModelMixin),
D(mixins.DestroyModelMixin)

4가지의 API 처리가 이미 포함되어 있음을 알 수 있다.

이제 마지막은 urls.py 파일에 PostUser Model에 대한 URL을 DefaultRouter 을 이용해서 추가한다.

router = DefaultRouter()
router.register(r"posts", PostViewSet, basename="post_status")
router.register(r"users", PostUserViewSet, basename="user_status")

드디어 GET API 를 테스트 할 준비가 되었다.

서버를 가동한 다음,

python manage.py runserver

Advanced REST Client 같은 API Client Test Tool을 열어서 GET API로 리퀘스트를 설정한다.

SEND 를 눌러서 Response 객체를 확인한다.
아래처럼 현재의 유저정보 로드에 성공하였다!

서버 로그를 보면, 200 OK 정상 처리가 됬음을 확인할 수 있다.

이것으로 GET API 처리가 잘 되는지 테스트 해보았다.

다음 포스팅에서는 이어서 POST API 에 대해서 테스트 해보겠다.

Thank you!

profile
django developer

0개의 댓글