首页 > 其他分享 >4.drf-版本管理

4.drf-版本管理

时间:2023-02-16 22:45:38浏览次数:33  
标签:管理 视图 v1 version 默认 版本 versioning 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并携带相关的的版本信息用的

 

标签:管理,视图,v1,version,默认,版本,versioning,drf
From: https://www.cnblogs.com/MRPython/p/17128572.html

相关文章

  • 8.drf-序列化器
    在序列化类中,如果想使用request,则可以通过self.context['request']获取序列化器的主要由两大功能-对请求的数据进行校验(底层调用的是Django的Form和ModelForm)-对数......
  • 7.drf-限流
    限流就是限制用户的访问频率,如每分钟的操作的次数不超过3次等对于匿名用户,使用用户IP作为唯一标识对于登录用户,则使用用户的ID作为唯一标识1.限流的机制DRF中......
  • 6.drf-权限
    认证:判断用户是否登陆,从而获取用户的信息权限:判断当前用户是否有权限访问API接口,例如:普通用户,管理员,超级管理员权限可能是不同的下面通过案例进行介绍模型类fromdj......
  • 业务+研发=一体化管理平台?
    兼顾研发及业务协作,又能够关注生态连接的工具,似乎在市面上还没有见到接近完美的产品。当然,万物皆在不断的进化,没有最好,只有更好。伴随着互联网在中国进程的发展,线上研发效......
  • 【技术分享】Android系统版本代号一览
    Android系统版本代号一览VersionCodeNameAPI时间11.0R/11302020.0910.0Q/10292019.059.0P/(Pie)282018.088.1O_MR1272017.128.......
  • MySQL(四)用户与权限管理
    用户与权限管理......
  • drf回顾,前端发展历史,vue介绍,第一个helloword,插值语法
    目录drf回顾,前端发展历史,vue介绍,第一个helloword,插值语法今日内容概要今日内容详细1drf回顾2前端发展历史3vue介绍4第一个helloworld5插值语法drf回顾,前端发展历史,vu......
  • 谈谈muduo库的销毁连接对象——C++程序内存管理和线程安全的极致体现
    #前言网络编程的连接断开一向比连接建立复杂的多,这一点在陈硕写的muduo库中体现的淋漓尽致,同时也充分体现了C++程序在对象生命周期管理上的复杂性,稍有不慎,满盘皆输。为......
  • ChatGPT Java客户端,OpenAi的Java版本SDK已完成,请火速接入。
    已经支持OpenAI官方的全部api,有bug欢迎朋友们指出,互相学习。源码地址:https://github.com/Grt1228/chatgpt-java不对之处欢迎指正。注意:由于这个接口:https://platform.o......
  • 缺陷管理工具
    一、禅道1、介绍地址:https://demo.zentao.net/user-login.html特点:国产、免费、开源、简单、轻量级三管融合(产品管理、......