이제 프론트 엔드 배포가 끝나서 백엔드 코드와 라이브러리 등을 점검한다.
swagger는 백엔드 api를 쉽게 보고, test하기 위해서 별도의 페이지가 생성되고
api가 변경될때마다 반영되어, 따로 명세서가 필요없기 때문에 만들어두면 편할거 같기도하고
한번쯤 사용법을 익힐필요가 있어서 연습삼아 만들어보았다 .
# Swagger 설정
schema_view = get_schema_view(
openapi.Info(
title="Livflow API",
default_version='v1',
description="Livflow 가계부, 단가계산기 api 입니다.",
terms_of_service="https://www.google.com/policies/terms/",
contact=openapi.Contact(email="dudrknd1642@gmail.com"),
license=openapi.License(name="MIT License"),
),
public=True,
permission_classes=(permissions.AllowAny,),
url='https://api.livflow.co.kr:8443',# 모든 사용자가 접근 가능
)
이미 스웨거로 자동문서화 하는 방법은 엄청 많기 때문에 그냥 내가 써보면서 이해해야할 부분을 적으려고한다.
우선 스웨거는 장고기본 drf_yasg이다. 이와 비슷한 기능이 있는 redoc은 장고에서 기본 제공해주는게 아니다. 이걸 기억해야하는게 aws가 아니라 nginx로 배포하는 경우에는 swagger는 따로 location을 지정해줄 필요없이 엔드포인트가 swagger일 경우에는
location / {
proxy_pass http://web_backend/; # 모든 요청을 Django 백엔드로 전달
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
이렇게 장고 기본으로 보내주면 swagger사이트가 뜬다.
하지만 Redoc같은 경우에는
location /redoc/ {
proxy_pass http://web_backend/redoc/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
이렇게 따로 지정을 해주어야 쓸수있다.
그럼 이렇게 기본 스웨거가 나오는데
스웨거도 csrf 설정을 해주어야 사용이 가능하기때문에 csrf설정을 하고
test를 위헤 post같은경우에는 입력값을 넣어봐야하기때문에
@swagger_auto_schema(
request_body=openapi.Schema(
type=openapi.TYPE_OBJECT,
properties={
'name': openapi.Schema(type=openapi.TYPE_STRING, description='가게 이름'),
'address': openapi.Schema(type=openapi.TYPE_STRING, description='가게 주소'),
},
required=['name', 'address'],
)
예시로 이런 오토스키마를 사용해서 직접 값을 넣게 할 수있다.
그럼 이런식으로 값을 입력해서 test를 해볼 수 있게된다.
프론트엔드와 직접 api명세서로 투닥거릴게 아니라면 swagger를 사용해서 문서화해도 좋을거같다.