版本组件在认证,权限,节流之前
一,自定义类通过get传参拿到版本
class ParamVision():
def determine_version(self,request,*args,**kwargs):
version=request.query_params.get('version')
return version
class UserView(APIView):
versioning_class=ParamVision
print(request.version)
return HttpResponse('已经获取到版本')
二,利用内置的类通过get传参拿到版本
from rest_framework.versioning import QueryParameterVersioning
class UserView(APIView):
versioning_class=QueryParameterVersioning
print(request.version)
return HttpResponse('已经获取到版本')
#setting文件中加配置
REST_FRAMEWORK = {
"DEFAULT_VERSION":"v1" #默认使用v1(没有获取到的情况下),
"ALLOWED_VERSION":["v1","v2"], #允许的版本,不是的话会报错版本不支持
"VERSION_PARAM":"VERSION" #传参的字段
}
三,利用内置的类通过url传参拿到版本(常用全局配置)
要和路由配合使用
urlpatterns=[
url(r'^api/(?P<version>[v1|v2]+)/users/$,views.UsersView.as_view())
]
from rest_framework.versioning import URLPathVersioning
class UserView(APIView):
print(request.version)
return HttpResponse('已经获取到版本')
REST_FRAMEWORK = {
"DEFAULT_VERSIONING_CLASS":"rest_framework.versioning.URLPathVersioning",
"DEFAULT_VERSION":"v1", #默认使用v1(没有获取到的情况下),
"ALLOWED_VERSION":["v1","v2"], #允许的版本,不是的话会报错版本不支持
"VERSION_PARAM":"VERSION", #传参的字段
}