根据RESTful规范,后端API中需要体现出版本,DRF中支持5种版本的设置,常见的三种如下
-
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.
-
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" }
源码流程同上
-
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" }
源码解析同上