DRF版本控制

2022-07-30 20:51:09 字數 1281 閱讀 6570

api 版本控制允許我們在不同的客戶端之間更改行為(同乙個介面的不同版本會返回不同的資料)。 drf提供了許多不同的版本控制方案。

可能會有一些客戶端因為某些原因不再維護了,但是我們後端的介面還要不斷的更新迭代,這個時候通過版本控制返回不同的內容就是一種不錯的解決方案。

drf提供了五種版本控制方案,如下圖:

這裡我們以 urlpathversioning 為例,還是在專案的settings.py中rest_framework配置項下配置:

rest_framework =
urls.py中

urlpatterns =[

...url(r

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

', views.publisherviewset.as_view()),

url(r

'^(?p[v1|v2]+)/publishers/(?p\d+)/$

', views.publisherviewset.as_view()),

]

我們在檢視中可以通過訪問 request.version 來獲取當前請求的具體版本,然後根據不同的版本來返回不同的內容:

我們可以在檢視中自定義具體的行為,下面以不同的版本返回不同的序列化類為例

class

publisherviewset(modelviewset):

defget_serializer_class(self):

"""不同的版本使用不同的序列化類

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

:

return

publishermodelserializerversion1

else

:

return

publishermodelserializer

queryset = models.publisher.objects.all()

注意,通常我們是不會單獨給某個檢視設定版本控制的,如果你確實需要給單獨的檢視設定版本控制,你可以在檢視中設定versioning_class屬性,如下:

class

publisherviewset(modelviewset):

...versioning_class = urlpathversioning

DRF版本控制

首先,我們開發的專案會有多個版本.其次,我們的專案版本會隨著更新越來越多,我們不可能因出了新版本就不維護舊版本了.那麼,我們就需要對版本進行控制 drf版本控制.目錄原始碼剖析 drf檢視中的apiview返回的是view類中的view函式,然後呼叫dispatch方法.那麼,我們來看看dispat...

drf 版本控制

目錄因為程式在不停的更新迭代,新版和舊版差別比較大,但此時有些使用者沒用進行更新,還是訪問的舊版,此時就需要進行版本控制,讓使用者體驗更好 from rest framework.versioning import queryparameterversioning,acceptheaderversi...

DRF 之 版本控制

1 版本控制是幹什麼用的,為什麼要有版本?我們都知道每乙個程式都是有版本的。而且版本也會公升級從v1公升級到v2 v3 v4 但是我們不可能因為新版本出現舊版本就不去維護,因為使用者有權選擇不更新版本。所以我們就需要對版本進行控制,這個drf也給我們提供了一些封裝好的方法。2 在版本的原始碼中遨遊 ...