从0学DRF(实战和源码剖析)——版本

使用方法

版本一般的两种形式

  • a. URL中通过GET传参()
    自定义:
    http://127.0.0.1:8000/api/users/?version=v2
class ParamVersion(object):
	def determine_version(self, request, *args, **kwargs):
		version = request.query_params.get('version')
		return version

class UsersView(APIView):

	versioning_class = ParamVersion
	def get(self,request,*args,**kwargs):
		#version = request._request.GET.get('version')
		#print(version)
		# version = request.query_params.get('version')
		# print(version)

		print(request.version)

		return HttpResponse('用户列表')
  • b. 在URL中传参(推荐使用)
urlpatterns = [
	# url(r'^admin/', admin.site.urls),
	url(r'^(?P<version>[v1|v2]+)/users/$', views.UsersView.as_view()),
]

版本只需要在配置文件中配置

REST_FRAMEWORK = {
	"DEFAULT_VERSIONING_CLASS":"rest_framework.versioning.URLPathVersioning",
	"DEFAULT_VERSION":'v1',
	"ALLOWED_VERSIONS":['v1','v2'],
	"VERSION_PARAM":'version',
}
		
class UsersView(APIView):

	def get(self,request,*args,**kwargs):
		print(request.version)
		return HttpResponse('用户列表')
总结

使用:
配置文件:

REST_FRAMEWORK = {
	"DEFAULT_VERSIONING_CLASS":"rest_framework.versioning.URLPathVersioning",
	"DEFAULT_VERSION":'v1',
	"ALLOWED_VERSIONS":['v1','v2'],
	"VERSION_PARAM":'version',
}

路由系统:

urlpatterns = [
		# url(r'^admin/', admin.site.urls),
		url(r'^api/', include('api.urls')),
	]

	urlpatterns = [
		# url(r'^admin/', admin.site.urls),
		url(r'^(?P<version>[v1|v2]+)/users/$', views.UsersView.as_view(),name='uuu'),
	]
			

视图:

class UsersView(APIView):

	def get(self,request,*args,**kwargs):

		# 1. 获取版本
		print(request.version)
		
		# 2. 获取处理版本的对象
		print(request.versioning_scheme)

		# 3. 反向生成URL(rest framework)
		u1 = request.versioning_scheme.reverse(viewname='uuu',request=request)
		print(u1)

		# 4. 反向生成URL
		u2 = reverse(viewname='uuu',kwargs={'version':2})
		print(u2)

		return HttpResponse('用户列表')
原创文章 85 获赞 120 访问量 4万+

猜你喜欢

转载自blog.csdn.net/happygjcd/article/details/105491184