DRF 之 版本控制

2022-02-15 14:12:44 字數 1704 閱讀 6337

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 總urls中的

urlpatterns =[

url(r

'^version/

', include('

version_demo.urls

')) #

這裡用了路由分發 ]#

urlpatterns =[

url(r

'^demo/

', version_demo.as_view()),

]

urls.py

3.4 試圖測試

class version_demo(apiview):     #

要繼承apiview ,因為version是在apiview中的

defget(self, request):

print

(request.version)

if request.version == 'v2'

:

print

(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...