Django API:在一定数量的请求之后撤销令牌
我正在尝试编写一个API,它将接收一个字符串或字符串列表,并返回模型的预测。我使用令牌身份验证是为了方便使用,但是,我不明白/无法想象如何限制用户每月可以发出的请求量。或者向匿名用户发出有限数量的请求。我应该创建自定义权限类吗Django API:在一定数量的请求之后撤销令牌,django,api,rest,Django,Api,Rest,我正在尝试编写一个API,它将接收一个字符串或字符串列表,并返回模型的预测。我使用令牌身份验证是为了方便使用,但是,我不明白/无法想象如何限制用户每月可以发出的请求量。或者向匿名用户发出有限数量的请求。我应该创建自定义权限类吗 ### settings.py ## INSTALLED_APPS = [ # basics 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contentty
### settings.py ##
INSTALLED_APPS = [
# basics
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sites',
# API
'rest_framework',
'rest_framework.authtoken', # auth
'rest_framework_tracking', # logging
]
有一个节流,您可以使用默认节流速率或创建自定义节流速率
REST_FRAMEWORK = {
'DEFAULT_THROTTLE_CLASSES': [
'rest_framework.throttling.AnonRateThrottle',
'rest_framework.throttling.UserRateThrottle'
],
'DEFAULT_THROTTLE_RATES': {
'anon': '100/day',
'user': '1000/day'
}
}
您可以在API中使用这些速率
from rest_framework.response import Response
from rest_framework.throttling import UserRateThrottle
from rest_framework.views import APIView
class ExampleView(APIView):
throttle_classes = [UserRateThrottle]
def get(self, request, format=None):
content = {
'status': 'request was permitted'
}
return Response(content)
我认为本文档可能会帮助您,虽然这在理论上可以回答这个问题,但可以在此处包含答案的基本部分,并提供链接供参考。@ArghyaSadhu我同意您的观点,但我认为我不应该从头开始编写API,我不想复制示例,但现在就可以了。谢谢。我看了一下,但是这个方法似乎只使用缓存。没有任何内容保存到数据库中,因此我无法每月跟踪每个用户的请求。
from rest_framework.response import Response
from rest_framework.throttling import UserRateThrottle
from rest_framework.views import APIView
class ExampleView(APIView):
throttle_classes = [UserRateThrottle]
def get(self, request, format=None):
content = {
'status': 'request was permitted'
}
return Response(content)