博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RESTFULL 08 rest-framework版本控制
阅读量:4708 次
发布时间:2019-06-10

本文共 1432 字,大约阅读时间需要 4 分钟。

rest-framework之版本控制

一、作用

​ 用于控制版本

二、内置版本控制类

from rest_framework.versioning import QueryParameterVersioning,AcceptHeaderVersioning,NamespaceVersioning,URLPathVersioning#基于url的get传参方式:QueryParameterVersioning------>如:/users?version=v1#基于url的正则方式:URLPathVersioning------>/v1/users/#基于 accept 请求头方式:AcceptHeaderVersioning------>Accept: application/json; version=1.0#基于主机名方法:HostNameVersioning------>v1.example.com#基于django路由系统的namespace:NamespaceVersioning------>example.com/v1/users/

三、局部使用

在视图类中配置versioning_class=URLPathVersioning

四、全局使用

REST_FRAMEWORK = {    'DEFAULT_VERSIONING_CLASS':'rest_framework.versioning.QueryParameterVersioning',    'DEFAULT_VERSION': 'v1',            # 默认版本(从request对象里取不到,显示的默认值)    'ALLOWED_VERSIONS': ['v1', 'v2'],   # 允许的版本    'VERSION_PARAM': 'version'          # URL中获取值的key}

五、注意

用基于正则的方式,需要修改urls.pyurl(r'^(?P
[v1|v2]+)/versiontest/', views.VersionTest.as_view()),
在视图类的方法中可以取出版本号reques.version

六、源码学习

#执行determine_version,返回两个值,放到request对象里version, scheme = self.determine_version(request, *args, **kwargs)request.version, request.versioning_scheme = version, schemedef determine_version(self, request, *args, **kwargs):        #当配置上版本类之后,就会实例化        if self.versioning_class is None:            return (None, None)        scheme = self.versioning_class()        return (scheme.determine_version(request, *args, **kwargs), scheme)

转载于:https://www.cnblogs.com/prodigal/p/10644968.html

你可能感兴趣的文章
基于dubbo的分布式系统(一)安装docker
查看>>
Recursion
查看>>
66. Plus One
查看>>
COMP30023 Computer Systems 2019
查看>>
CSS选择器分类
查看>>
Kali学习笔记39:SQL手工注入(1)
查看>>
C# MD5加密
查看>>
Codeforces Round #329 (Div. 2)D LCA+并查集路径压缩
查看>>
移动应用开发测试工具Bugtags集成和使用教程
查看>>
Java GC、新生代、老年代
查看>>
Liferay 6.2 改造系列之十一:默认关闭CDN动态资源
查看>>
多线程
查看>>
折线切割平面
查看>>
获取当前路径下的所有文件路径 :listFiles
查看>>
图像形态学及更通用的形态学的原理及细节汇总
查看>>
linux开启coredump的3种方法
查看>>
数据驱动之 python + requests + Excel
查看>>
小鸡啄米问题求解
查看>>
Castle.net
查看>>
HDU1532 网络流最大流【EK算法】(模板题)
查看>>