VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > Python基础教程 >
  • Django REST Framework之版本控制

何谓版本控制?

为什么需要版本控制?

一个项目在升级迭代的时候,不会立马抛弃旧的版本,甚至会出现多个版本共存同时维护的情况,因此需要版本控制。

版本控制做了什么?

版本控制做的事情很简单,在前后端分离的情况下,只是对请求做判断,判断这是哪个版本的请求,然后将版本信息封装入request对象中。

自定义版本控制类

1.settings.py配置

1
2
3
REST_FRAMEWORK = {
    "DEFAULT_VERSIONING_CLASS""utils.version.MyVersion"# 默认使用的版本控制类
}

2.编写自定义版本控制类(根据请求参数)

1
2
3
4
5
class MyVersion(object):
    def determine_version(self, request, *args, **kwargs):
        "版本号携带在请求"
        version = request.query_params.get("version""v1"# 请求参数中查找有无version字段,如果没有默认是v1
        return version # 将版本返回

3.视图中获取

1
2
request.version     # 版本号
request.versioning_scheme  # 版本控制类的实例

使用DRF的版本控制类

Django REST Framework为我们提供了5个版本控制类,分别是五种不同的判断方式,基本能满足开发需求。

1
2
3
4
5
1.AcceptHeaderVersioning 将版本信息放在请求头
2.URLPathVersioning      将版本信息放在URL中,
3.NamespaceVersioning    将版本信息放在URL中,不同之处在于Django路由的处理方式,使用命名空间
4.HostNameVersioning     将版本信息放在域名的最低一层
5.QueryParameterVersioning 降版本信息放在请求参数中

直接在settings中配置就可以用:

1
2
3
4
5
6
REST_FRAMEWORK = {
    "DEFAULT_VERSIONING_CLASS""rest_framework.versioning.QueryParameterVersioning",
    "DEFAULT_VERSION""v1.0.0",    # 默认的版本,当无法从请求中获取版本信息的时候,默认按照此版本执行
    "ALLOWED_VERSIONS""v1.0.0, v1.1.0, v2.0.0"# 允许的版本
    "VERSION_PARAM""ver"# 获取版本的参数。
}