1、版本控制是幹什麼用的,為什麼要有版本?
我們都知道每乙個程式都是有版本的。而且版本也會公升級從v1公升級到v2、v3、v4·····,但是我們不可能因為新版本出現舊版本就不去維護,因為使用者有權選擇不更新版本。所以我們就需要對版本進行控制,這個drf也給我們提供了一些封裝好的方法。
2、在版本的原始碼中遨遊
2.1 先看apiview中,有個initial方法
2.2 點選initial進入,我們可以看到將版本資訊version 和 版本控制方案scheme 分別賦值給了request.version 和 request.determine_version.
self.determine_version 這個方法是找我們自己定義的版本控制類,沒有的話就返回(none,none)
其實這個版本控制方案就是我們配置的版本控制的類,也就是說,apiview通過這個方法初始化了自己提供的元件
2.3 在rest_framework.versioning裡檢視版本控制類的方法。
3、具體用法
以url上攜帶版本資訊為例
3.1 第一步
先自定義乙個版本控制類
class自定義乙個版本控制類myversion(object):
def determine_version(self, request, *args, **kwargs):
version = request.query_params.get("
version")
ifnot
version:
version = 'v1'
return version
3.2 第二部 在配置檔案中註冊
rest_framework =配置seting.py
3.3 在url中寫路由
#urls.py這個urls 總urls中的
urlpatterns =[
url(r
'^version/
', include('
version_demo.urls
')) #
這裡用了路由分發 ]#
urlpatterns =[
url(r
'^demo/
', version_demo.as_view()),
]
3.4 試圖測試
class version_demo(apiview): #試圖測試要繼承apiview ,因為version是在apiview中的
defget(self, request):
(request.version)
if request.version == 'v2'
:
(request.version)
return response('
這是v2版本')
return response('
這是v1版本
')
DRF版本控制
首先,我們開發的專案會有多個版本.其次,我們的專案版本會隨著更新越來越多,我們不可能因出了新版本就不維護舊版本了.那麼,我們就需要對版本進行控制 drf版本控制.目錄原始碼剖析 drf檢視中的apiview返回的是view類中的view函式,然後呼叫dispatch方法.那麼,我們來看看dispat...
DRF版本控制
api 版本控制允許我們在不同的客戶端之間更改行為 同乙個介面的不同版本會返回不同的資料 drf提供了許多不同的版本控制方案。可能會有一些客戶端因為某些原因不再維護了,但是我們後端的介面還要不斷的更新迭代,這個時候通過版本控制返回不同的內容就是一種不錯的解決方案。drf提供了五種版本控制方案,如下圖...
drf 版本控制
目錄因為程式在不停的更新迭代,新版和舊版差別比較大,但此時有些使用者沒用進行更新,還是訪問的舊版,此時就需要進行版本控制,讓使用者體驗更好 from rest framework.versioning import queryparameterversioning,acceptheaderversi...