유저등록 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!