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は、解析後のファイルおよび非ファイルデータ を含む.は、POST、PUT、PATCH要求方式を解析するデータ を含む. REST frameworkのparsers解析器を利用し、フォームタイプデータのみならずJSONデータ もサポート
2).query_params
2. Response
REST frameworkは、応答オブジェクトを構築する応答クラス
REST frameworkは、要求ヘッダの
こうぞうモード
パラメータの説明:
共通のプロパティ:
1).data
responseオブジェクトに転送されたシーケンス化後、renderが処理していないデータ
2).status_code
ステータスコードの数字
3).content
render処理後の応答データ
3.ステータスコード
ステータスコードの設定を容易にするために、REST framewrokは、
1)情報告知-1 xx
2)成功-2 xx
3)リダイレクト-3 xx
4)クライアントエラー-4 xx
5)サーバエラー-5 xx
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
のプロパティですが、次のプロパティがあります.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