pip install -U drf-yasg # 전역으로 설치
pip freeze > requirements.txt # 버전정보 저장
설치하시죠
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'post.apps.PostConfig', # 'post' 라고만 적어도 됨
'drf_yash',
]
seminar/settings.py 에서 해당 앱을 등록해주고
from django.contrib import admin
from django.urls import path, include
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="Post API",
default_version='v1',
description="Post API",
),
public=True,
permission_classes=(permissions.AllowAny,),
)
urlpatterns = [
path('admin/', admin.site.urls),
path('api/post/', include('post.urls')),
path('swagger/', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'),
]
seminar/urls.py 에서 swagger url을 새롭게 등록해준다
이렇게 API 명세 화면이 잘 뜬다 !!
class PostListView(APIView):
## 여길 추가합니다
@swagger_auto_schema(
operation_id='게시글 목록 조회',
operation_description='게시글 목록을 조회합니다.',
responses={200: PostSerializer(many=True)}
)
## 여길 추가합니다
def get(self, request):
posts = Post.objects.all()
serializer = PostSerializer(posts, many=True)
return Response(serializer.data, status=status.HTTP_200_OK)
## 여길 추가합니다
@swagger_auto_schema(
operation_id='게시글 생성',
operation_description='게시글을 생성합니다.',
request_body=PostSerializer,
responses={201: PostSerializer}
)
## 여길 추가합니다
def post(self, request):
title = request.data.get('title')
content = request.data.get('content')
if not title or not content:
return Response({"detail": "[title, content] fields missing."}, status=status.HTTP_400_BAD_REQUEST)
post = Post.objects.create(title=title, content=content)
serializer = PostSerializer(post)
return Response(serializer.data, status=status.HTTP_201_CREATED)
이런 식으로 @swagger_auto_scheme() 이라는 데코레이션을 통해 API 명세를 추가할 수 있습니다~~
'web > django' 카테고리의 다른 글
Django 모델 생성하고 One-To-Many 관계 형성하기 (0) | 2024.05.13 |
---|---|
데이터베이스 핵심 개념들 (0) | 2024.05.13 |
Django serializer 활용하기 (0) | 2024.05.08 |
Django View 설계하기 (0) | 2024.05.07 |
Django model 생성하고 설정하기 (0) | 2024.05.07 |