4.drf-版本管理

2023-02-12,,,

根据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-版本管理的相关教程结束。

《4.drf-版本管理.doc》

下载本文的Word格式文档,以方便收藏与打印。