drf 版本控制

2022-08-22 10:00:17 字數 2139 閱讀 3838

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

from rest_framework.versioning import queryparameterversioning, acceptheaderversioning, namespaceversioning, urlpathversioning, hostnameversioning

"""1. queryparameterversioning: 基於url的get傳參方式, 如: /users?version=v1

2. urlpathversioning: 基於url的正則方式, 如: /v1/users/

4. hostnameversioning: 基於主機名方法, 如: v1.example.com

5. namespaceversioning: 基於django路由系統的namespace, 如: example.com/v1/users/

"""

只需要在cbv函式中加入如下引數:

versioning_class = urlpathversioning
需要在settings.py中進行配置

rest_framework =
基於正則的方式:

# urls.py

from django.conf.urls import url, include

from web.views import testview

urlpatterns = [

url(r'^(?p[v1|v2]+)/test/', testview.as_view(), name='test'),

]

# views.py

from rest_framework.views import apiview

from rest_framework.response import response

from rest_framework.versioning import urlpathversioning

class testview(apiview):

versioning_class = urlpathversioning

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

# 獲取版本

print(request.version)

# 獲取版本管理的類

print(request.versioning_scheme)

# 反向生成url

reverse_url = request.versioning_scheme.reverse('test', request=request)

print(reverse_url)

return response('get請求,響應內容')

# 基於django內建,反向生成url

from django.urls import reverse

url2=reverse(viewname='ttt',kwargs=)

print(url2)

#執行determine_version,返回兩個值,放到request物件裡

version, scheme = self.determine_version(request, *args, **kwargs)

request.version, request.versioning_scheme = version, scheme

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

#當配置上版本類之後,就會例項化

if self.versioning_class is none:

return (none, none)

scheme = self.versioning_class()

return (scheme.determine_version(request, *args, **kwargs), scheme)

DRF版本控制

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

DRF版本控制

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

DRF 之 版本控制

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