api 版本控制允許我們在不同的客戶端之間更改行為(同乙個介面的不同版本會返回不同的資料)。 drf提供了許多不同的版本控制方案。
可能會有一些客戶端因為某些原因不再維護了,但是我們後端的介面還要不斷的更新迭代,這個時候通過版本控制返回不同的內容就是一種不錯的解決方案。
drf提供了五種版本控制方案,如下圖:
這裡我們以 urlpathversioning 為例,還是在專案的settings.py中rest_framework配置項下配置:
rest_framework =urls.py中
urlpatterns =[我們在檢視中可以通過訪問 request.version 來獲取當前請求的具體版本,然後根據不同的版本來返回不同的內容:...url(r
'^(?p[v1|v2]+)/publishers/$
', views.publisherviewset.as_view()),
url(r
'^(?p[v1|v2]+)/publishers/(?p\d+)/$
', views.publisherviewset.as_view()),
]
我們可以在檢視中自定義具體的行為,下面以不同的版本返回不同的序列化類為例
class注意,通常我們是不會單獨給某個檢視設定版本控制的,如果你確實需要給單獨的檢視設定版本控制,你可以在檢視中設定versioning_class屬性,如下:publisherviewset(modelviewset):
defget_serializer_class(self):
"""不同的版本使用不同的序列化類
"""if self.request.version == 'v1'
:
return
publishermodelserializerversion1
else
:
return
publishermodelserializer
queryset = models.publisher.objects.all()
classpublisherviewset(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 在版本的原始碼中遨遊 ...