Meme's IT

[Django] API 문서화 본문

BackEnd/Django

[Django] API 문서화

Memez 2023. 10. 19. 11:00

# OpenAPI Specification(OAS)

RESTful API를 설명하고 시각화하는 표준화된 방법

→ API에 대한 세부사항을 기술할 수 있는 공식 표준


 

# drf-spectacular 라이브러리

DRF를 위한OAS를 도와주는 라이브러리

https://drf-spectacular.readthedocs.io/en/latest/readme.html#installation 를 통해 설치해준다

$ pip install drf-spectacular

 

# settings.py

INSTALLED_APPS = [
    # 추가
    'drf_spectacular',
]


# 추가
REST_FRAMEWORK = {
    # YOUR SETTINGS
    'DEFAULT_SCHEMA_CLASS': 'drf_spectacular.openapi.AutoSchema',
}

 

# 프로젝트 urls.py
from django.contrib import admin
from django.urls import path, include
# 추가
from drf_spectacular.views import SpectacularAPIView, SpectacularRedocView, SpectacularSwaggerView

urlpatterns = [
    path("admin/", admin.site.urls),
    path('api/v1/', include('articles.urls')),
    # 추가
    path('api/schema/', SpectacularAPIView.as_view(), name='schema'),
    path('api/schema/swagger-ui/', SpectacularSwaggerView.as_view(url_name='schema'), name='swagger-ui'),
    path('api/schema/redoc/', SpectacularRedocView.as_view(url_name='schema'), name='redoc'),
]

 

위의 url서버 들어가면 확인 가능

 

 


# get_object_or_404( ) 

get으로 가져오지만, 만약 없다면 Http 404를 일으키는 함수

원래는 없으면 서버가 중단되고 500이 뜸

그래서 articles/views.py에서 get함수들을 다 바꿔주자

from django.shortcuts import get_object_or_404

# article = Article.objects.get(pk=article_pk)
article = get_object_or_404(Article, pk = article_pk)

그럼 없는걸 입력하면 404 NotFound로 응답

 

 

# get_list_or_404( )

객체 목록이 없다면 Http404를 줌

all을 바꿔주자

from django.shortcuts import get_object_or_404, get_list_or_404

# articles = Article.objects.all()
articles= get_list_or_404(Article)

 

왜씀?

  • 오류가 발생했을 때 클라이언트에게 뭐가 잘못되었는지 알려주기 위해

 

'BackEnd > Django' 카테고리의 다른 글

[Django] CORS Policy  (0) 2023.11.14
[Django] API KEY 숨기는 방법  (0) 2023.10.27
[Django] DRF(2) N:1 Relation  (0) 2023.10.19
[Django] DRF(1) single model  (0) 2023.10.18
[Django] DRF란?  (0) 2023.10.18