rest framework之版本控制

2022-03-10 22:53:17 字數 3627 閱讀 9198

api版本控制可以用來在不同的客戶端使用不同的行為。rest框架提供了大量不同的版本設計。 

版本控制是由傳入的客戶端請求決定的,並且可能基於請求url,或者基於請求頭。 

有許多有效的方法達到版本控制的目的。特別是為具有多個客戶的長期系統工程進行設計時,沒有版本控制的系統也是可以的。

當使用版本控制時,request.version屬性(字串)與客戶端請求的版本一致。 

預設情況下,沒有使用版本控制,request.version將會返回none 

1 基於不同版本進行不同的行為

def get_serializer_class(self):

if self.request.version == 'v1':

return accountserializerversion1

return accountserializer

2 改變url

from rest_framework.reverse import reverse

reverse('bookings-list', request=request)

reverse函式將應用於轉換任何請求版本的url。 

- namespacedversioning:類似命名空間

'v1:bookings-list'

3 queryparameterversioning:查詢引數

4 版本控制和超連結序列化器 

當使用超連結的序列化器和基於url的版本控制方案時,確保將請求作為序列化器的上下文。

def get(self, request):

queryset = booking.objects.all()

serializer = bookingsserializer(queryset, many=true, context=)

return response()

1. 新增配置
rest_framework =

2. 設定路由
beescity/urls.py

urlpatterns = [

#url(r'^admin/', admin.site.urls),

url(r'^api/(?p\w+)/', include('api.urls')),

]api/urls.py

urlpatterns = [

url(r'^course/$', course.courseview.as_view()),

]

3. 傳遞版本資訊

4. 獲取版本
request.version 獲取版本

除非明確設定,否則default_versioning_class值為none.此例中request.version將會始終返回none 

您還可以在乙個單獨的檢視上設定版本控制方案。通常,您不需要這樣做,因為在全域性範圍內使用乙個版本控制方案更有意義。如果您確實需要這樣做,請使用versioning_class屬性。

from rest_framework.versioning import queryparameterversioning

class course(apiview):

versioning_class = queryparameterversioning

這個時候可以用過url傳參的方式來傳遞版本資訊,如:

api版本控制可以用來在不同的客戶端使用不同的行為。rest框架提供了大量不同的版本設計。 

版本控制是由傳入的客戶端請求決定的,並且可能基於請求url,或者基於請求頭。 

有許多有效的方法達到版本控制的目的。特別是為具有多個客戶的長期系統工程進行設計時,沒有版本控制的系統也是可以的。

當使用版本控制時,request.version屬性(字串)與客戶端請求的版本一致。 

預設情況下,沒有使用版本控制,request.version將會返回none 

1 基於不同版本進行不同的行為

def get_serializer_class(self):

if self.request.version == 'v1':

return accountserializerversion1

return accountserializer

2 改變url

from rest_framework.reverse import reverse

reverse('bookings-list', request=request)

reverse函式將應用於轉換任何請求版本的url。 

- namespacedversioning:類似命名空間

'v1:bookings-list'

3 queryparameterversioning:查詢引數

4 版本控制和超連結序列化器 

當使用超連結的序列化器和基於url的版本控制方案時,確保將請求作為序列化器的上下文。

def get(self, request):

queryset = booking.objects.all()

serializer = bookingsserializer(queryset, many=true, context=)

return response()

1. 新增配置
rest_framework =

2. 設定路由
beescity/urls.py

urlpatterns = [

#url(r'^admin/', admin.site.urls),

url(r'^api/(?p\w+)/', include('api.urls')),

]api/urls.py

urlpatterns = [

url(r'^course/$', course.courseview.as_view()),

]

3. 傳遞版本資訊

4. 獲取版本
request.version 獲取版本

除非明確設定,否則default_versioning_class值為none.此例中request.version將會始終返回none 

您還可以在乙個單獨的檢視上設定版本控制方案。通常,您不需要這樣做,因為在全域性範圍內使用乙個版本控制方案更有意義。如果您確實需要這樣做,請使用versioning_class屬性。

from rest_framework.versioning import queryparameterversioning

class course(apiview):

versioning_class = queryparameterversioning

這個時候可以用過url傳參的方式來傳遞版本資訊,如:

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之許可權元件

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

rest framework 之版本控制

用於版本的控制 from rest framework.versioning import queryparameterversioning,acceptheaderversioning,namespaceversioning,urlpathversioning 基於url的get傳參方式 quer...