0からDRF(実戦とソースコードの剖析)を学びます。


使い方
バージョン一般の2つの形態
  • 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[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[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('    ')