DRF版本控制

2022-05-11 17:21:00 字數 3006 閱讀 7241

"首先,我們開發的專案會有多個版本.

其次,我們的專案版本會隨著更新越來越多,我們不可能因出了新版本就不維護舊版本了.

那麼,我們就需要對版本進行控制——drf版本控制.

目錄原始碼剖析

drf檢視中的apiview返回的是view類中的view函式,然後呼叫dispatch方法.

那麼,我們來看看dispatch方法都做了些什麼:

執行self.initial方法之前是各種賦值,包括request的重新封裝賦值.

self.initial方法中有路由的分發,我們再來看下此方法具體都做了些什麼:

我們可以看到:

version版本資訊賦值給了request.version.

scheme版本控制方案賦值給了request.versioning_scheme.

其實這個版本控制方法就是我們配置的版本控制的類.

也就是說,apiview通過這個方法初始化自己提供的元件.

我們接下來看看rest_framework為我們提供了那些版本控制的方法(在from rest_framework import versioning檔案內):

如上,rest_framework為我們提供的所有版本控制的方法.

下面,我們來看看在url上攜帶版本資訊的用法.

如上圖所有示,urlpathversioning是在url上攜帶版本資訊的方法.

步驟一setting.py

rest_framework =
步驟二urls.py

from django.conf.urls import url

from blog.views import test01view # 匯入檢視

urlpatterns = [

# 如下路徑形式:

url(r'^(?p[v1|v2]+)/test01', test01view.as_view()),

]

步驟三views.py

from rest_framework.views import apiview

from rest_framework.response import response

class test01view(apiview):

def get(self, request, *args, **kwargs):

print("版本:", kwargs['version'])

print("版本控制資訊:", request.versioning_scheme)

if request.version == 'v1':

# 處理版本v1的業務邏輯

return response("這是版本v1的資訊")

# 處理版本v2的業務邏輯

return response("這是版本v2的資訊")

測試效果如下圖:

步驟一 建立自定義版本控制類

class myversion():

def determine_version(self, request, *args, **kwargs):

# 返回值是版本號

# 獲取前端傳過來的版本號 並且把版本號返回

version = request.query_params.get('version')

if not version:

# 預設為版本v1,否則都為版本v2

version = 'v1'

return version

步驟二setting.py

rest_framework =
步驟三urls.py

from blog.views import test02view  # 匯入檢視

urlpatterns = [

# 如下路徑格式

url(r'^test02/$', test02view.as_view()),

]

步驟四views.py

from rest_framework.views import apiview

from rest_framework.response import response

class test02view(apiview):

def get(self, request):

print("版本:", request.version)

print("版本控制資訊:", request.versioning_scheme)

if request.version == 'v2':

# 處理版本v2的業務邏輯

return response("這是版本v2的資訊")

# 處理版本v1的業務邏輯

return response("這是版本v1的資訊")

測試效果如下圖:

is ok.

DRF版本控制

api 版本控制允許我們在不同的客戶端之間更改行為 同乙個介面的不同版本會返回不同的資料 drf提供了許多不同的版本控制方案。可能會有一些客戶端因為某些原因不再維護了,但是我們後端的介面還要不斷的更新迭代,這個時候通過版本控制返回不同的內容就是一種不錯的解決方案。drf提供了五種版本控制方案,如下圖...

drf 版本控制

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

DRF 之 版本控制

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