4.drf-版本管理

根據RESTful規范 , 后端API中需要體現出版本,DRF中支持5種版本的設置,常見的三種如下
1. URL的GET中傳遞參數

  • 在視圖類中定義
    from rest_framework.versioning import QueryParameterVersioningversioning_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"}

4.drf-版本管理

文章插圖
源碼解析
4.drf-版本管理

文章插圖

4.drf-版本管理

文章插圖
2.URL路徑傳遞
  • 在視圖類中定義
    from rest_framework.versioning import URLPathVersioningversioning_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"}

4.drf-版本管理

文章插圖
【4.drf-版本管理】源碼流程同上
4.drf-版本管理

文章插圖
3. 請求頭傳遞
  • 在視圖類中定義
    from rest_framework.versioning import AcceptHeaderVersioningversioning_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.drf-版本管理

文章插圖
源碼解析同上
4.drf-版本管理

文章插圖
4.反向生成在每個版本處理的類中還定義了reverse方法,他是用來反向生成URL并攜帶相關的的版本信息用的
4.drf-版本管理

文章插圖

    推薦閱讀