본문 바로가기
DEV/Web 개발

Web 개발 :: 파이썬 Django Rest Framework(2) _ 포스트맨, Swagger

by 올커 2022. 10. 26.

DRF(Django Rest Framework)(2) _ Postman, Swagger

01. 포스트맨

 - 개발 도중에 포스트맨에서도 Collections를 만들고 아래와 같이 기존에 만들었던 url링크를 입력하여 Send버튼을 누르면 저장된 데이터를 아래와 같이 불러올 수 있다. (*이때 django 서버는 active상태여야 한다.)

 - 1번 게시글과 2번 게시글을 각각 가져오는 request를 만들고 저장한다.(*Save버튼을 꼭 눌러주어야 한다.)

 - 이렇게 지정해두면 나중에 수정사항이 생길 때 바로바로 확인이 가능하다.

 - 포스트맨으로 게시글 생성도 가능하다. 아래와 같이 메서드를 POST로 바꾸고, 'Body', 'raw', 'JSON'을 차례로 선택해 준 후 아래에 입력할 데이터를 dict 형태로 넣어준 다음 Send버튼을 누르면 정상적으로 데이터가 등록됨을 확인할 수 있다.

 - 이렇게 필요한 기능들은 포스트맨에 저장해서 그때그때 사용하면 편리하다.


 - 그런데 현재 상태로는 url을 항상 입력해주어야 하기 때문에 번거로움이 남아있다. 이 때에는 Environments를 설정해주면 된다. (Environments -> New Environment -> 새로운 환경을 추가하여 사용한다.)

 - local은 기본값, 나중에 port를 변경하는 경우 등에는 deploy에 변경된 url을 host라는 variable에 넣어 사용한다.

 - 자주 사용할 request의 경우 아래와 같이 사용한다. 

   먼저 n번 게시글 가져오기라는 request에는 맨 우측 Environment는 local로 지정하고, url부분에 공통적으로 들어가는 부분은 {{변수명}} (여기서는 host)으로 표기한다.

 


 - 이제 포스트맨을 사용하 update와 delete 기능을 세팅해보려고 한다.

 - 삭제하기는 아래와 같이 간단하게 delete로 세팅해주고 해당되는 게시글의 article_id를 url에 입력 후 send하면 정상적으로 동작되는 것을 확인할 수 있다.

 - 수정하기는 생성하기와 유사하기 생각하면 된다. request method는 PUT, 그리고 Body, raw, JSON을 차례로 선택한 후 수정할 내용을 입력하여 send하면 동작되는 것을 확인할 수 있다.


02. JSON

 - JSON(Javascript Object Notation) : 서버-서버, 서버-클라이언트 간 데이터를 주고받을 때 사용하는 형식

                                                          스펙이 간결하고, 버전이 바뀌지 않는 장점이 있다.

 - Parse : 데이터의 의미를 해석하는 과정(Html을 읽을 때, 코드를 컴파일 할 때, 압축을 해제할 때)

               Deserailize를 포함하는 큰 의미이다.


03. Swagger

 - API를 자동으로 만들어주는 어플 (* 사용법 참고 링크 - DRF-yasg)

 - 스웨거 설치

# swagger 설치
pip install drf-yasg

 - settings.py의 INSTALLED_APPS에 'drf_yasg' 추가

INSTALLED_APPS = [
   ...
   'drf_yasg',
   ...
]

 - urls.py에 아래 코드 끼워넣기

...
from django.urls import re_path
from rest_framework import permissions
from drf_yasg.views import get_schema_view
from drf_yasg import openapi

...

schema_view = get_schema_view(
   openapi.Info(
      title="Snippets API",
      default_version='v1',
      description="Test description",
      terms_of_service="https://www.google.com/policies/terms/",
      contact=openapi.Contact(email="contact@snippets.local"),
      license=openapi.License(name="BSD License"),
   ),
   public=True,
   permission_classes=[permissions.AllowAny],
)

urlpatterns = [
   re_path(r'^swagger(?P<format>\.json|\.yaml)$', schema_view.without_ui(cache_timeout=0), name='schema-json'),
   re_path(r'^swagger/$', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'),
   re_path(r'^redoc/$', schema_view.with_ui('redoc', cache_timeout=0), name='schema-redoc'),
   ...
]

 - 서버 실행 후 127.0.0.1:8000/swagger/ 에 접속해보면 아래와 같이 이전에 만들어두었던 API들을 확인할 수 있다.

 - 각각의 API를 눌러서 내용들도 확인해볼 수 있다.

 

반응형

댓글