その他の制約に対する応答ペイロードの検証
HTTP 応答のシリアライズは、要求処理の最終ステップの 1 つです。応答本文と応答ヘッダーは両方とも、シリアライズが必要です。その際、応答本文は HttpServletResponse 出力ストリームに書き込まれ、応答ヘッダーはサーブレットコンテナによって応答に書き込まれる文字列になります。Cloud API は各種 Java オブジェクト型のシリアライズをサポートしています。このオブジェクト型は、API ハンドラメソッドから直接返したり、応答オブジェクトの本文の値として設定したり、応答オブジェクトのヘッダーの値として追加したりできます。
シリアライズされた形式が JSON である応答オブジェクト型はいくつかあります。JsonObject、JsonWrapper、および TransformResult などです。デフォルトでは、JsonObject や JsonWrapper は、宣言された応答スキーマに対してのみ検証され、そのオブジェクトに関するすべてのプロパティがスキーマ内で宣言され、正しいデータ型であることが確保されます。TransformResult オブジェクトは、このオブジェクトを生成するマッピングファイルが関連する JSON スキーマを遵守する必要があることから、「暗黙的に検証」されます。
フレームワークでも JsonObject、JsonWrapper、TransformResult を minLength などのスキーマ、一連の必須フィールド、または定義済みのカスタム検証に定義されているその他の制約に対して検証するように要求できます。これらの追加検証はデフォルトでは実行されません。というのは、エンドポイントが正しく実装されており、有効なデータのみが返されると想定されている実稼働状況では、追加検証は不要な出費になる可能性があるからです。スキーマに定義されている制約は、入力のみへの適用を意図しているため、応答でその制約の一部が侵害される可能性もあります。
GW-ValidateResponseHandling ヘッダーを使用して、Cloud API で宣言されたスキーマに対して応答を検証することができます。そのためには、ヘッダーを指定し、その値を true に設定します。