swagger를 통한 API 문서화 작업과 Throttling을 통한 API 요청 제한에 대해 알아보겠습니다.
drf-yasg 라이브러리를 통해API서버를 이용하려는 사람들에게 API 사용 방법을 알려주는 문서를 자동으로 만들어줍시다.
$pip install drf-yasg
#./api/settings.py
INSTALLED_APPS = [
# ...
'drf_yasg',
# ...
]
# ./api/urls.py
#추가
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,),
)
→ 서버실행 후, /swagger/ URI로 이동!
Throttling is similar to permissions, in that it determines if a request should be authorized. Throttles indicate a temporary state, and are used to control the rate of requests that clients can make to an API.
API 요청횟수 제한하기
# ./api/settings.py
# Rate Limiting
REST_FRAMEWORK = {
'DEFAULT_THROTTLE_CLASSES': [
'rest_framework.throttling.AnonRateThrottle',
'rest_framework.throttling.UserRateThrottle'
],
'DEFAULT_THROTTLE_RATES': {
'anon': '1/hour',
'user': '1000/day'
}
}
위의 DEFAULT_THROTTLE_RATES
부분에서 요청횟수/시간 을 원하는 대로 설정한다.
The rate descriptions used in DEFAULT_THROTTLE_RATES may include second
, minute
, hour
or day
as the throttle period.
# ./api/urls.py
# drf-yasg
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,),
)
처음엔 잘 됩니다.
제한 시간당 1개로 뒀어요