DRFビューのRequestとResponseリクエスト

4704 ワード

RequestとResponse
1. Request
REST framework転送ビューのrequestオブジェクトは、DjangoのデフォルトのHttpRequestオブジェクトではなく、REST frameworkが提供するHttpRequestクラスを拡張したRequestクラスのオブジェクトです.
REST frameworkはParser解析器を提供しており、要求を受信するとContent-Typeが指定した要求データ型(JSON、フォームなど)に基づいて要求データをparse解析し、クラス辞書オブジェクトとしてRequestオブジェクトに保存するように解析する.
Requestオブジェクトのデータは,フロントエンド送信データのフォーマットに基づいて自動的に解析された結果である.
フロントエンドが送信するどのフォーマットのデータでも、データを統一的に読み取ることができます.
共通プロパティ
1).data request.dataは、解析後の要求体データを返す.Djangoの標準と同様のrequest.POSTおよびrequest.FILESのプロパティですが、次のプロパティがあります.
  • は、解析後のファイルおよび非ファイルデータ
  • を含む.
  • は、POST、PUT、PATCH要求方式を解析するデータ
  • を含む.
  • REST frameworkのparsers解析器を利用し、フォームタイプデータのみならずJSONデータ
  • もサポート
    2).query_params request.query_paramsはDjango規格のrequest.GETと同じで、より正確な名前を変更しただけです.
    2. Response rest_framework.response.Response
    REST frameworkは、応答オブジェクトを構築する応答クラスResponseを提供し、応答の具体的なデータ内容は、フロントエンドの要件に適合するタイプに変換される.
    REST frameworkは、要求ヘッダのRenderer(データ型宣言の受信)に基づいて応答データを対応するフォーマットに自動的に変換するためのAcceptレンダラーを提供する.フロントエンドリクエストでAccept宣言が行われていない場合は、デフォルトで応答データが処理されます.デフォルトの応答フォーマットは、構成によって変更できます.
    REST_FRAMEWORK = {
        'DEFAULT_RENDERER_CLASSES': (  #        
            'rest_framework.renderers.JSONRenderer',  # json   
            'rest_framework.renderers.BrowsableAPIRenderer',  #   API   
        )
    }
    

    こうぞうモード
    Response(data, status=None, template_name=None, headers=None, content_type=None)
    
    dataデータはrender処理後のデータではなくpythonの組み込みタイプデータを渡すだけでよく、REST frameworkはrendererレンダラーを使用してdataを処理します.dataは、Djangoのモデルクラスオブジェクトのような複雑な構造のデータではありません.このようなデータについては、Serializerシーケンサシーケンス化処理後(Python辞書タイプに移行)dataパラメータに渡すことができます.
    パラメータの説明:
  • data:応答のために準備されたシーケンス化処理後のデータ;
  • status:ステータスコード、デフォルト200;
  • template_name:テンプレート名、HTMLRendererを使用する場合は指定する必要があります.
  • headers:応答ヘッダ情報を格納するための辞書;
  • content_type:応答データのContent-Type、通常このパラメータは伝達する必要はなく、REST frameworkはフロントエンドに必要なタイプのデータに基づいてこのパラメータを設定します.

  • 共通のプロパティ:
    1).data
    responseオブジェクトに転送されたシーケンス化後、renderが処理していないデータ
    2).status_code
    ステータスコードの数字
    3).content
    render処理後の応答データ
    3.ステータスコード
    ステータスコードの設定を容易にするために、REST framewrokは、rest_framework.statusモジュールにおいて一般的なステータスコード定数を提供する.
    1)情報告知-1 xx
    HTTP_100_CONTINUE
    HTTP_101_SWITCHING_PROTOCOLS
    

    2)成功-2 xx
    HTTP_200_OK
    HTTP_201_CREATED
    HTTP_202_ACCEPTED
    HTTP_203_NON_AUTHORITATIVE_INFORMATION
    HTTP_204_NO_CONTENT
    HTTP_205_RESET_CONTENT
    HTTP_206_PARTIAL_CONTENT
    HTTP_207_MULTI_STATUS
    

    3)リダイレクト-3 xx
    HTTP_300_MULTIPLE_CHOICES
    HTTP_301_MOVED_PERMANENTLY
    HTTP_302_FOUND
    HTTP_303_SEE_OTHER
    HTTP_304_NOT_MODIFIED
    HTTP_305_USE_PROXY
    HTTP_306_RESERVED
    HTTP_307_TEMPORARY_REDIRECT
    

    4)クライアントエラー-4 xx
    HTTP_400_BAD_REQUEST
    HTTP_401_UNAUTHORIZED
    HTTP_402_PAYMENT_REQUIRED
    HTTP_403_FORBIDDEN
    HTTP_404_NOT_FOUND
    HTTP_405_METHOD_NOT_ALLOWED
    HTTP_406_NOT_ACCEPTABLE
    HTTP_407_PROXY_AUTHENTICATION_REQUIRED
    HTTP_408_REQUEST_TIMEOUT
    HTTP_409_CONFLICT
    HTTP_410_GONE
    HTTP_411_LENGTH_REQUIRED
    HTTP_412_PRECONDITION_FAILED
    HTTP_413_REQUEST_ENTITY_TOO_LARGE
    HTTP_414_REQUEST_URI_TOO_LONG
    HTTP_415_UNSUPPORTED_MEDIA_TYPE
    HTTP_416_REQUESTED_RANGE_NOT_SATISFIABLE
    HTTP_417_EXPECTATION_FAILED
    HTTP_422_UNPROCESSABLE_ENTITY
    HTTP_423_LOCKED
    HTTP_424_FAILED_DEPENDENCY
    HTTP_428_PRECONDITION_REQUIRED
    HTTP_429_TOO_MANY_REQUESTS
    HTTP_431_REQUEST_HEADER_FIELDS_TOO_LARGE
    HTTP_451_UNAVAILABLE_FOR_LEGAL_REASONS
    

    5)サーバエラー-5 xx
    HTTP_500_INTERNAL_SERVER_ERROR
    HTTP_501_NOT_IMPLEMENTED
    HTTP_502_BAD_GATEWAY
    HTTP_503_SERVICE_UNAVAILABLE
    HTTP_504_GATEWAY_TIMEOUT
    HTTP_505_HTTP_VERSION_NOT_SUPPORTED
    HTTP_507_INSUFFICIENT_STORAGE
    HTTP_511_NETWORK_AUTHENTICATION_REQUIRED