残りのフレームワークのバージョン管理

役割:

    バージョン管理のための

 

2つの組み込みバージョンコントロールクラス:

rest_framework.versioning インポートQueryParameterVersioningを、AcceptHeaderVersioning、NamespaceVersioning、URLPathVersioning 

ベースのパラメータ渡しモードは、URLを取得:このよう:? /ユーザーバージョン= V1のようQueryParameterVersioning ------> 通常の方法でURLをもと:URLPathVersioning ----- - > / V1 /ユーザ/ 途中には、リクエストヘッダを受け入れる:AcceptHeaderVersioning ------>受け入れる:;ファイルアプリケーション/ JSONを= 1.0バージョン
#1 :HostNameVersioning ------> v1.example.comホスト名に基づいてジャンゴルーティングシステムの名前空間に基づく:NamespaceVersioning ------> example.com/v1/users/

三つの部分を使用します

を追加しましたCBVクラス 
versioning_class = URLPathVersioning

コンフィギュレーション設定で

= REST_FRAMEWORK { 
    
    ' DEFAULT_VERSION '' V1 '#1 (要求オブジェクト、表示されたデフォルト値から取られていない)デフォルトのバージョン
    ' ALLOWED_VERSIONS ':[ ' V1 '' V2 ' ]、   許容バージョン
    ' VERSION_PARAM 'バージョン          URLは、キーの値を取得しました 
}

4つのグローバル使用

= REST_FRAMEWORK { 

' DEFAULT_VERSIONING_CLASS '' rest_framework.versioning.QueryParameterVersioning '


' DEFAULT_VERSION '' V1 '#のデフォルトのバージョン(要求オブジェクト、表示されたデフォルト値から取られていない) ' ALLOWED_VERSIONS ':[ ' V1 '' V2 ' ]、 許さバージョン ' VERSION_PARAM '' バージョン" URL取得したキー値 }

ファイブサンプルコードは次のとおりです。

定期的に基づきます。

urlpatterns = [ 
    URL(R ' ^管理/ ' 、admin.site.urls)、
    URL(R ' ^(P <バージョン> [V1 |?V2] +)/パブリッシュ/ '、views.PublishView.as_view()) 、

 

rest_framework.viewsの輸入APIView
 から rest_framework.responseのインポート応答
 から rest_framework.versioning 輸入URLPathVersioningの


クラス:TestViewに(APIView)
    versioning_class = URLPathVersioning 

    デフのget(自己、要求、* argsを、** kwargsからの):
        获取版本
        プリント(request.version )
         获取版本管理的类
        プリント(request.versioning_scheme) 

        反向生成URLの 
        REVERSE_URL = request.versioning_scheme.reverse(' テスト'、要求= 要求)
         を印刷(REVERSE_URL)

        を返す応答(GET要求、応答内容を

 

 

 ベースのDjango組み込み、生成されたURLを逆
        から django.urls インポートリバース
        URL2 =リバース(VIEWNAME = ' TTT '、kwargsから= { ' バージョン'' V2 ' })
         印刷(URL2)を

 

ソースコード解析

ここに要求オブジェクト、2つの値を返し、determine_versionを実行 
版、スキーム= self.determine_version(リクエスト、引数*、** kwargsから)
request.version、request.versioning_scheme = バージョン、スキーム

DEFの determine_version(セルフ、要求、*引数、** kwargsから):
        クラスのコンフィギュレーション・バージョンの後には、インスタンス化し
        た場合 self.versioning_classはありませんなし:
             リターン(なし、なし)
        スキーム = self.versioning_class()
         の戻り(scheme.determine_version(要求、* argsを、 ** kwargsから)、スキーム)

 

おすすめ

転載: www.cnblogs.com/HUIWANG/p/11139318.html