728x90
반응형
SMALL
Django DRF(Django Rest Framework) View의 종류
1. APIView(CBV) - 클래스형 뷰
2. @api_view(FBV) - 함수형 뷰
이 2개 중 FBV 활용하는 법 알아보기
DRF(Django Rest Framework)가 세팅이 안되어 있으면 이전 포스팅 참고:  Django-Swagger-DRF-Setting

 

@api_view(FBV) - 함수형 뷰 사용 및 활용법

1. 뷰를 작성할 때 함수 위에 @api_view와 같이 Decorator(데코레이터)를 사용한다.

2. Decorator(데코레이터)를 사용하여 GET, POST API를 만드는 방법이다.

# App의 views.py

 

@api_view(['GET'])

def get_test(request):

    return Response(request)

 

# tags: API 명칭 설명

# manual_parameters: API에 Parameter 생성 (하단 api_params.py)

@swagger_auto_schema(method="POST", tags=["새로운 이름"], manual_parameters=get_test_params,

                                           operation_summary="api 이름", operation_description="api 사용법",

                                           responses={201: '201 Description', 400: '400 Description', 500: '500 Description'})

@api_view(['POST'])    # POST API

def post_test(request):

    return Response(request)

 

@swagger_auto_schema(method="PUT", tags=["새로운 이름"])

@api_view(['PUT'])    # PUT API

def put_test(request):

    # 5번 참고

    """

    # 제목 크기 1

    ## 제목 크기 2

    ### 제목 크기 3

    #### 제목 크기 4

    ##### 제목 크기 5

    ###### 제목 크기 6

    [나의 블로그](https://200-rush.tistory.com/ "나의 블로그 설명")

    """

    return Response(request)

 

@api_view(['GET', 'POST'])    # GET, POST 2개의 API 동시 생성

def get_post_test(request):

    return Response(request)


# App에 추가한 api_params.py

# (참고) App에 파일을 추가해도 되고, views.py에 작성해도 되나, parameter를 모아두기 위해서 api_params.py를 생성하여 관리하였다.

 

from drf_yasg import openapi

 

get_test_params = [

    openapi.Parameter(

        name="param_1",

        in_=openapi.IN_QUERY,

        description="param_1을 입력",

        required=True,

        type=openapi.TYPE_STRING,

        default="abc"

    )

]


# Project의 urls.py

 

urlpatterns = [

    path('/get', views.get_test),

    path('/post', views.post_test),

    path('/put', views.put_test),

    path('/get_post_test', views.get_post_test)

]

3. Swagger 실행화면

  - http://127.0.0.1:8000/swagger/

  - @api_view(['GET', 'POST'])로 지정한 get_post_test 함수는 아래와 같이 그룹으로 표시된다.

  - @swagger_auto_schema의 tags를 사용하면 함수이름이 아닌 새롭게 지정한 이름이 표시된다. tags이름이 같으면 그룹으로 표시된다.

API 리스트

4. manual_parameters를 사용하면 Parameter를 넣을 수 있는 칸이 활성화되고, operation_summary는 path옆에 나타나는 문구,

    operation_description는 api를 펼쳤을 때 나타나는 문구를 표시할 수 있다.

    responses는 결과코드를 세팅할 수 있다.

@swagger_auto_schema을 활용한 API

5. App의 views.py의 소스를 보면 operation_description은 함수 안에 """ """을 사용하여 표시가 가능하다.

    MarkDown 문법으로 operation_description을 작성하면 된다.

MarkDown문법으로 작성한 operation_description

6. MarkDown 사용법 : DjangoSwagger에서 MarkDown사용법

728x90
반응형
LIST

+ Recent posts