• 4.drf-版本管理


    根据RESTful规范,后端API中需要体现出版本,DRF中支持5种版本的设置,常见的三种如下

    1. URL的GET中传递参数

    • 在视图类中定义
      from rest_framework.versioning import QueryParameterVersioning
      versioning_class = QueryParameterVersioning

       

    • 访问路由添加版本
      http://127.0.0.1:8000/api/users/?version=v1
    • 在视图函数中获取版本
      request.version
    • 其他配置
      复制代码
      REST_FRAMEWORK = {
              # 默认路由版本关键字为version,可以在此修改
          "VERSION_PARAM": "v",
            # 允许版本,否则报错
          "ALLOWED_VERSIONS": ["v1", "v2", "v3"],
            # 默认版本,路由没有添加版本,则使用默认版本
          "DEFAULT_VERSION": "v1",
            # 全局配置版本类,在视图类中就可以不定义了
          "DEFAULT_VERSIONING_CLASS":"rest_framework.versioning.QueryParameterVersioning"
      }
      复制代码
        

     

     

     

    源码解析

     

     

     

     

     

     

    2.URL路径传递

    • 在视图类中定义
      from rest_framework.versioning import URLPathVersioning
      versioning_class = URLPathVersioning
    • 在访问路径中添加版本
      127.0.0.1:8000/api/v1/users/
    • 在视图函数中获取版本
      request.version
    • 其他配置
      复制代码
      REST_FRAMEWORK = {
              # 默认路由版本关键字为version,可以在此修改
          "VERSION_PARAM": "v",
            # 允许版本,否则报错
          "ALLOWED_VERSIONS": ["v1", "v2", "v3"],
            # 默认版本,路由没有添加版本,则使用默认版本
          "DEFAULT_VERSION": "v1",
            # 全局配置版本类,在视图类中就可以不定义了
          "DEFAULT_VERSIONING_CLASS":"rest_framework.versioning.URLPathVersioning"
      }
      复制代码

       

     

     

     

    源码流程同上

     

     

     

    3. 请求头传递

    • 在视图类中定义
      from rest_framework.versioning import AcceptHeaderVersioning
      versioning_class = AcceptHeaderVersioning
    • 在请求Accept中添加版本
      127.0.0.1:8000/api/users/
      Accept:version=v1
    • 在视图函数中获取版本
      request.version
    • 其他配置
      复制代码
      REST_FRAMEWORK = {
              # 默认路由版本关键字为version,可以在此修改
          "VERSION_PARAM": "v",
            # 允许版本,否则报错
          "ALLOWED_VERSIONS": ["v1", "v2", "v3"],
            # 默认版本,路由没有添加版本,则使用默认版本
          "DEFAULT_VERSION": "v1",
            # 全局配置版本类,在视图类中就可以不定义了
          "DEFAULT_VERSIONING_CLASS":"rest_framework.versioning.URLPathVersioning"
      }
      复制代码

       

     

     

     

    源码解析同上

     

     

     

    4.反向生成

    在每个版本处理的类中还定义了reverse方法,他是用来反向生成URL并携带相关的的版本信息用的

     

  • 相关阅读:
    因为manifest.json文件引起的 android-chrome-192x192.png 404 (Not Found)
    算法学习(一)—— 如何看待数据结构与算法
    如何使用css美化网页?
    集合的父亲之collection----(单列集合顶级接口)和遍历方式
    YOLOv5全面解析教程②:如何制作训练效果更好的数据集
    【深入浅出 Yarn 架构与实现】4-5 RM 行为探究 - 启动 ApplicationMaster
    数学建模值TOPSIS法及代码
    《C和指针》(1)快速上手
    保姆级cat系统搭建过程
    Android学习笔记 1.1 Android的发展和历史
  • 原文地址:https://www.cnblogs.com/victor1234/p/16874426.html