DRF的版本控制

DRF的版本

版本控制是作什麼用的, 咱們爲何要用

  首先咱們要知道咱們的版本是幹嗎用的呢~~你們都知道咱們開發項目是有多個版本的~~框架

當咱們項目愈來愈更新~版本就愈來愈多~~咱們不可能新的版本出了~之前舊的版本就不進行維護了~~~ide

那咱們就須要對版本進行控制~~這個DRF也給咱們提供了一些封裝好的版本控制方法~~函數

版本控制怎麼用

  以前咱們學視圖的時候知道APIView,也知道APIView返回View中的view函數,而後調用的dispatch方法~url

那咱們如今看下dispatch方法~~看下它都作了什麼~~spa

  執行self.initial方法以前是各類賦值,包括request的從新封裝賦值,下面是路由的分發,那咱們看下這個方法都作了什麼~~版本控制

  咱們能夠看到,咱們的version版本信息賦值給了 request.version  版本控制方案賦值給了 request.versioning_scheme~~rest

  其實這個版本控制方案~就是咱們配置的版本控制的類~~code

  也就是說,APIView經過這個方法初始化本身提供的組件~~blog

  咱們接下來看看框架提供了哪些版本的控制方法~~在rest_framework.versioning裏~~路由

  框架一共給咱們提供了這幾個版本控制的方法~~咱們在這裏只演示一個~~由於基本配置都是同樣的~~

詳細用法

 1 REST_FRAMEWORK = {
 2     # 默認使用的版本控制類
 3     'DEFAULT_VERSIONING_CLASS': 'rest_framework.versioning.URLPathVersioning',
 4     # 容許的版本
 5     'ALLOWED_VERSIONS': ['v1', 'v2'],
 6     # 版本使用的參數名稱
 7     'VERSION_PARAM': 'version',
 8     # 默認使用的版本
 9     'DEFAULT_VERSION': 'v1',
10 }
第一步 settings.py
1 urlpatterns = [
2     url(r"^versions", MyView.as_view()),
3     url(r"^(?P<version>[v1|v2]+)/test01", TestView.as_view()),
4 ]
第二步 urls.py
 1 class TestView(APIView):
 2     def get(self, request, *args, **kwargs):
 3         print(request.versioning_scheme)
 4         ret = request.version
 5         if ret == "v1":
 6             return Response("版本v1的信息")
 7         elif ret == "v2":
 8             return Response("版本v2的信息")
 9         else:
10             return Response("根本就匹配不到這個路由")
第三步 視圖
相關文章
相關標籤/搜索