(1)発送方法の詳細要求オブジェクト元のパッケージ----
(元の要求メソッドとプロパティをなど、直接通話要求内にカプセル化することができ、またはrequest._request使用することができるからrequest.user == request._request.user
DEFの派遣(セルフ、要求、* argsを、** kwargsから): "" " ` .dispatch() `ほとんど同じで、Djangoの定期派遣、IS AS しかし、スタートアップ、ファイナライズ、および例外処理のための余分なフック付き。 " "" self.args = 引数 self.kwargs = kwargsから #1の元のパッケージにさらに要求 リクエスト= self.initialize_request(リクエスト、引数*、** kwargsから) self.requestは =要求#(2)さらに、要求パッケージが施されています self.headersの= self.default_response_headers #廃止? 試してみる: #要求するために呼び出しを追加2. self.initial(要求、* argsを、** kwargsから)#(3)比閲覧中多的执行的方法、使用封装过后的要求进行调用 #適切なハンドラメソッドを取得し た場合 request.method.lower()で自己。 http_method_names: ハンドラ = GETATTR(自己、request.method.lower()、 self.http_method_not_allowed) 他: ハンドラ = self.http_method_not_allowed 応答 =ハンドラ(要求、* argsを、** kwargsから) を除き、EXCとして例外: 応答 = self.handle_exception (EXC) self.responseSelf.finalize_response =(要求、応答、引数*、** kwargsから)#(4)元のオブジェクトに応じては、さらに、カプセル化されて 戻り self.response
カプセル化(2)initialize_request元の要求
DEF(セルフ、要求、* argsを、** initialize_request kwargsからの): "" " 最初のリクエストオブジェクトで返します 。""" parser_context = self.get_parser_context(リクエスト) 、リターン要求( リクエスト、#(1-1)、元のリクエスト パーサself.get_parsers =() #(1-2)[デシリアライゼーション・モード・リスト] オーセンティケータ= self.get_authenticators() #rest_frameworkという構成ファイルの(1-3)の例を[ミドルウェア認証クラスリスト] - - [BasicAuthenticationオブジェクトを、SessionAuthenticationオブジェクト] 交渉= self.get_content_negotiator()、 parser_context = parser_context )
(3)詳細self.initial ----証明機関+ + +バージョン制御スロットル
self.initial(要求、* argsを、** kwargsから)#(3)比閲覧中多的执行的方法、使用封装过后的要求进行调用 デフ初期(自己、要求、* argsを、** kwargsから): "" 「 従来の方法ハンドラを呼び出すに発生する必要が何かを実行します。 『』」 self.format_kwarg = self.get_format_suffix(** kwargsから) #コンテントネゴシエーションを実行し、要求の受け入れ情報保存 NEG = self.perform_content_negotiation(リクエスト) のリクエストを.accepted_renderer、request.accepted_media_type = NEG #バージョン管理が使用されている場合は、APIのバージョンを確認します。(3-0)API版本的获取 バージョン、= self.determine_versionスキーム(要求、* argsを、** kwargsから) request.version、request.versioning_scheme =バージョン、スキーム#のバージョン番号と処理さ #着信要求がザ・が許可されていることをEnsure®を self.perform_authentication(リクエスト)#(3-1)認証が記録され self.check_permissions(要求)#(3-2)権利コンポーネント self.check_throttles(要求)#の周波数成分