zoukankan      html  css  js  c++  java
  • DRF的版本控制

    DRF的版本

    版本控制是做什么用的, 我们为什么要用

      首先我们要知道我们的版本是干嘛用的呢~~大家都知道我们开发项目是有多个版本的~~

    当我们项目越来越更新~版本就越来越多~~我们不可能新的版本出了~以前旧的版本就不进行维护了~~~

    那我们就需要对版本进行控制~~这个DRF也给我们提供了一些封装好的版本控制方法~~

    版本控制怎么用

      之前我们学视图的时候知道APIView,也知道APIView返回View中的view函数,然后调用的dispatch方法~

    那我们现在看下dispatch方法~~看下它都做了什么~~

      执行self.initial方法之前是各种赋值,包括request的重新封装赋值,下面是路由的分发,那我们看下这个方法都做了什么~~

      我们可以看到,我们的version版本信息赋值给了 request.version  版本控制方案赋值给了 request.versioning_scheme~~

      其实这个版本控制方案~就是我们配置的版本控制的类~~

      也就是说,APIView通过这个方法初始化自己提供的组件~~

      我们接下来看看框架提供了哪些版本的控制方法~~在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("根本就匹配不到这个路由")
    第三步 视图
  • 相关阅读:
    乘电梯(动规+单调队列队头优化)
    贪心基础题目整理
    动规基础方程整理
    [第一波模拟day3T3]{益智游戏}(game.cpp)
    [第一波模拟day3T2]{独立集}(bubble.cpp)
    [第一波模拟day1T2]{分班}(divide.cpp)
    考前模版整理
    [Noip2004][Day ?][T?]合并果子(?.cpp)
    [Noip2017][Day 1][T1]玩具谜题(toy.cpp)
    新开始?
  • 原文地址:https://www.cnblogs.com/wdbgqq/p/9892389.html
Copyright © 2011-2022 走看看