[Series1. DashBoard 만들기] - 12. API View 테스트 (3)
유저정보 변경 (PUT, PATCH) API 테스트 하기
지금까지 PostUser
Model에 대하여 데이터를 가져오는 GET
API와, 새로운 데이터를 등록하는 POST
API에 대해서 테스트 하였다.
본 포스팅에서는 기존 데이터를 편집하는 PUT
, PATCH
API에 대하여 테스트를 해보겠다.
저번 포스팅에서도 언급하였지만, 우리가 현재 API 개발에 기초로 두고 있는 클래스는 ModelViewSet
이다.
이 클래스 안에서 기본적인 API에 대해서 내부적으로 이미 개발이 되어 있기 때문에 세세한 사양변화의 Customizing 작업이나, 특별한 처리를 추가하고 싶을때를 제외하면 추가 개발은 딱히 필요 없다.
우리가 신경써야 할 부분은 API 에서 처리할 대상을 어떻게 추릴 것이며, 클라이언트에게 돌려줄 데이터를 어떻게 정의할 것인가
에 해당하는 Serializer
를 용도에 맞게 끔 수정해야 한다는 점이다.
일단 간단하게, 신규 등록은 ID
, Password
정보로만 테스트 해보자.
프로젝트 폴더 아래에 dashboard_core/views.py
파일을 열고 아래와 같이 편집한다.
class PostUserViewSet(ModelViewSet):
queryset = PostUser.objects.all()
def get_serializer_class(self):
if self.action == 'list':
return PostUserSerializer
elif self.action == 'create':
return PostUserPostSerializer
elif self.action == 'update':
return PostUserPostSerializer
elif self.action == 'delete':
return PostUserPostSerializer
else:
return PostUserSerializer
이것으로 각 API
에 따라서 다른 Serializer
를 정의하였다.
이제부터 딱히 소스를 만질 필요는 없지만, 간단히 유저가 요청할때부터 응답을 받을 때까지의 흐름에 대해서 다시 정리해보자.
-
유저가 원하는 API로 데이터와 함께 서버에게 리퀘스트 요청을 한다.
-
django
의urls.py
파일(DefaultRouter
) 에서 유저 요청을 분석하여 처리를 어느View
클래스로 분기시킬지 결정한다. -
해당
View
클래스에서action
에 맞게 데이터 처리를 시행한다.
action
이란, ModelViewSet
클래스 기준으로 create
, retrieve
,
update
, partial_update
,
destroy
, list
의 총 6가지로 나뉜다.
- 처리가 끝난 데이터는
Serializer
에 의해,JSON
형태로 클라이언트에 돌려진다.
이상, 처리 Cycle은 끝이다.
django
와 restframework
에서 내부적으로 처리해주는 부분이 많기 때문에 이해가 힘들수도 있겠지만 그럴수록 더 흐름에 대해서 만큼은 빠삭하게 알고 있어야 한다.
자, 본격적으로 기존 데이터를 PUT
API를 이용하여 수정해보자.
서버를 실행하자.
python manage.py runserver
이어서 Advanced REST Client
를 열고, 아래와 같이 GET
API를 리퀘스트 한다.
결과는 아래와 같다.
위와 같이 현재 데이터가 확인되었으니
id
가 3인 데이터(username
: test1
, password
: 123123123
)를 아래와 같이 수정해보도록 하자.
{
"username": "test3",
"password": "4564567"
}
아래와 같이 PUT
API 리퀘스트 양식을 작성한다.
전송해서 성공하면, 아래처럼 서버로부터 갱신된 데이터를 클라이언트로 반환시켜준다.
리퀘스트 요청대로 잘 처리되었음을 알 수 있다.
이어서, 부분적인 데이터만 수정하는 PATCH
API를 테스트해보자.
방금전에 수정했던 데이터의 username
필드만 수정해보겠다.
아래와 같이 리퀘스트를 작성한다.
SEND
버튼을 눌러서 서버에 리퀘스트하면, 변경사항이 반영된 전체 PostUser
Model의 데이터가 반환됨을 알 수 있다.
지금까지 수정 API인 PUT
과 PATCH
를 각각 테스트 해보았다.
여기서 POST
API 와의 차이점에 대해서 간단히 정리해보겠다.
Serailizer
에 정의된 모든 필드를 다 서버에 넘겨줘야만 하는 POST
API라면, 정의된 필드중에서 수정하고싶은 몇개 필드만 넘기고 싶을 때에는 PATCH
API를 사용한다고 보면 이해가 쉽다.
다음 포스팅에는 삭제하는 DELETE
API에 대하여 테스트 해보도록 한다.
Thank you!
Author And Source
이 문제에 관하여([Series1. DashBoard 만들기] - 12. API View 테스트 (3)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@django_apps/Series1-12저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)