目錄因為程式在不停的更新迭代,新版和舊版差別比較大,但此時有些使用者沒用進行更新,還是訪問的舊版,此時就需要進行版本控制,讓使用者體驗更好
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 在版本的原始碼中遨遊 ...