一、版本控制
from rest_framework.request import Request
from rest_framework.views import APIView
from rest_framework.parsers import JSONParser
from rest_framework.versioning import QueryParameterVersioning,URLPathVersioning,AcceptHeaderVersioning
class VersionTest(APIView):
parser_classes=[JSONParser]
versioning_class=AcceptHeaderVersioning
def get(self, request,*args,**kwargs):
print(request.version)
print(request.versioning_scheme)
return Response()
'''
# 版本控制
-内置的类
QueryParameterVersioning 基于get传参的方式
AcceptHeaderVersioning 基于请求头的
NamespaceVersioning 基于名称空间的
URLPathVersioning 基于正则的方式(推荐)
-局部使用
在视图类中配置
versioning_class=URLPathVersioning
-全局使用
REST_FRAMEWORK = {
# 'DEFAULT_VERSIONING_CLASS':'rest_framework.versioning.QueryParameterVersioning',
'DEFAULT_VERSION': 'v1', # 默认版本(从request对象里取不到,显示的默认值)
'ALLOWED_VERSIONS': ['v1', 'v2'], # 允许的版本
'VERSION_PARAM': 'version' # URL中获取值的key
}
-例外:
用基于正则的方式,需要修改urls.py
url(r'^(?P<version>[v1|v2]+)/versiontest/', views.VersionTest.as_view()),
-在视图类的方法中可以取出版本号
reques.version
'''