rest framework之版本控制

2022-09-06 18:57:10 字數 2376 閱讀 3945

from rest_framework.versioning import urlpathversioning, queryparameterversioning, acceptheaderversioning
#基於url的正則方式:urlpathversioning------>/v1/users/(需要掌握這種)
#基於url的get傳參方式:queryparameterversioning------>如:/users?version=v1

#基於主機名方法:hostnameversioning------>v1.example.com

#基於django路由系統的namespace:namespaceversioning------>example.com/v1/users/

#

在cbv類中加入

versioning_class = urlpathversioning

rest_framework =

urlpatterns =[

url(r

'^(?p[v1|v2]+)/books/$

', views.book.as_view(),name='

cao'

),給路由重新命名,為了後面做反向解析

]

#

版本控制

from rest_framework.versioning import

urlpathversioning, queryparameterversioning, acceptheaderversioning

class

book(viewsetmixin, apiview):

#區域性使用

versioning_class =urlpathversioning

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

#獲取版本

print

(request.version)

#路由反向解析,這種方式不好,麻煩

#from django.urls import reverse

#url=reverse(viewname='cao',kwargs=)

#print(url)

#提供給咱的解析,為了反向生成url

reverse_url=request.versioning_scheme.reverse('

cao',request=request)

print

(url)

response =

book_list =models.book.objects.all()

#例項化產生乙個加密分頁的物件

page =cursorpagination()

#按nid排序

page.ordering = '

nid'

page_list =page.paginate_queryset(book_list, request, self)

#丟到序列化類中,完成序列化

ser = myser.bookserializers(instance=page_list, many=true)

#最後返回資料

return page.get_paginated_response(ser.data)

版本控制

掌握的:urlpathversioning

-在setting中配置:

'version_param

':'version',

'default_version

':'v1',

'allowed_versions

': ['

v1', 'v2'

], -區域性使用:

versioning_class =urlpathversioning

-全域性使用:

'default_versioning_class

':'rest_framework.versioning.urlpathversioning',

-路由配置:

url(r

'^(?p[v1|v2|v3]+)/books/$

', views.book.as_view(),name='

ttt'

), -在檢視類中的request物件中,就可以取出版本號

-反向解析:

因為request物件能取出版本號,內部自動填入

如果是路由有別的有名/無名分組,需要手動傳過去

url2=request.versioning_scheme.reverse('

ttt',request=request)

rest framework之認證元件

1 models層 class user models.model username models.charfield max length 32 password models.charfield max length 32 user type models.integerfield choice...

rest framework之版本控制

api版本控制可以用來在不同的客戶端使用不同的行為。rest框架提供了大量不同的版本設計。版本控制是由傳入的客戶端請求決定的,並且可能基於請求url,或者基於請求頭。有許多有效的方法達到版本控制的目的。特別是為具有多個客戶的長期系統工程進行設計時,沒有版本控制的系統也是可以的。當使用版本控制時,re...

REST framework之許可權元件

例如只用超級使用者才能訪問指定的資料,普通使用者不能訪問,所以就要有許可權元件對其限制 from rest framework.permissions import basepermission class userpermission basepermission message 不是超級使用者,...