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并携带相关的的版本信息用的

4.drf-版本管理的更多相关文章
- 第 13 篇:DRF 框架之 API 版本管理
作者:HelloGitHub-追梦人物 API 不可能一成不变,无论是新增或者删除已有 API,都会对调用它的客户端产生影响.如果对 API 的增删没有管理,随着 API 的增增减减,调用它的客户端就 ...
- python 全栈开发,Day99(作业讲解,DRF版本,DRF分页,DRF序列化进阶)
昨日内容回顾 1. 为什么要做前后端分离? - 前后端交给不同的人来编写,职责划分明确. - API (IOS,安卓,PC,微信小程序...) - vue.js等框架编写前端时,会比之前写jQuery ...
- DRF的版本、认证、权限
DRF的版本 版本控制是做什么用的, 我们为什么要用 首先我们要知道我们的版本是干嘛用的呢~~大家都知道我们开发项目是有多个版本的~~ 当我们项目越来越更新~版本就越来越多~~我们不可能新的版本出了~ ...
- Restful 1 -- REST、DRF(View源码解读、APIView源码解读)及框架实现
一.REST 1.什么是编程? 数据结构和算法的结合 2.什么是REST? - url用来唯一定位资源,http请求方式来区分用户行为 首先回顾我们曾经做过的图书管理系统,我们是这样设计url的,如下 ...
- drf
跨域同源 django做跨域同源 需要把csrf去掉 跨站请求伪造 同源 同源机制:域名.协议.端口号相同的同源 简单请求 不写头部请求 跨域会拦截报错缺少请求信息 (1) 请求方法是以下三种方法之一 ...
- linux系统下使用流行的版本管理工具 Git
前几天被版本管理困扰了好久,主要是因为 没法回到之前的版本,新版本又出了问题真的很尴尬. 终于决定使用目前网上很火的版本管理工具-------Git 历史啥的就不说了,说些有用的. 我用的是oschi ...
- 版本管理工具svn简介
svn简介 SVN是一种C/S架构的版本管理软件 , 能够帮助我们保存开发过程中各个文件的所有历史版本, 你因此可以方便的找回软件的任何一个历史状态., 日常开发中经常用到. 安装使用 1. 在 u ...
- Git 版本管理的简单理解
来源:百度知道 现在使用Git版本管理代码的项目非常多.但是Git本身是一条复杂的系统.我从几个简单的点来说明Git的基本功能.希望能帮助初学者快速入门. 工具/原料 Git code dot j ...
- GIT版本管理工具
原文:http://blog.csdn.net/ithomer/article/details/7527877 Git 是一个分布式版本控制工具,它的作者 Linus Torvalds 是这样给我们介 ...
- MacOS下Python的多版本管理(pyenv)
与windows下设置绝对路径不同,pyenv使用了一种更优雅的方式来管理Python的版本.pyenv通过在$PATH的最前面插入一个垫片路径(shims),例如:~/.pyenv/shims:/u ...
随机推荐
- Hadoop相关WebUI端口记录
以下均为默认端口号,可根据配置文件修改:HDFS:50070yarn:8088Hive:10002HBase:60010Spark:8080Flink:8081Storm:8080
- KingbaseES V8R6集群管理运维案例之---repmgr standby switchover故障
案例说明: 在KingbaseES V8R6集群备库执行"repmgr standby switchover"时,切换失败,并且在执行过程中,伴随着"repmr stan ...
- gin如何多次shoubind一个请求参数
gin多次绑定请求参数 package main import ( "fmt" "net/http" "time" "github ...
- 【ACG】博主在专栏更新内容后,及时通知关注他的用户去阅读
业务场景 当用户打开应用时,系统发送Push消息给用户,向用户推荐博主信息.用户关注博主后,将保存用户的订阅信息,当关注的博主更新内容时,向订阅的用户发送短信,提醒用户及时查看最新内容.从而持续增 ...
- Exchange备份和日志清除
最近新部署Exchange 2019,虽然变化不大,但是也遇到了一些小问题.随着深入研究,就能发现一些以前被忽视的点.Exchange完成备份后,数据库日志并没有被清除,依然存在.https://ww ...
- 第五章:Admin管理后台 - 3:Admin文档生成器
Django的admindocs应用可以从模型.视图.模板标签等地方获得文档内容. 一.概览 要激活admindocs,请按下面的步骤操作: 在INSTALLED_APPS内添加django.cont ...
- Kibana:如何让用户匿名访问 Kibana 中的 Dashboard
文章转载自:https://elasticstack.blog.csdn.net/article/details/118152293 有一个很好的 Dashboard,我们想分析这个 Dashboar ...
- 示例:Ingress通过互联网访问应用
Ingress Ingress 是 Kubernetes 的一种 API 对象,将集群内部的 Service 通过 HTTP/HTTPS 方式暴露到集群外部,并通过规则定义 HTTP/HTTPS 的路 ...
- cAdvisor容器监控规则
其他说明参考host主机监控规则:https://www.cnblogs.com/sanduzxcvbnm/p/13589848.html 在prometheus主程序目录下的rules目录下新建do ...
- ERP是什么呢?
ERP(Enterprise Resource Planning,企业资源计划)系统,是进行物质资源.资金资源和信息资源集成一体化管理的企业信息管理系统,ERP统领企业全局,为管理层服务,重心在于企业 ...