前のトピック: REST データ プロトコル次のトピック: スクリプタブル データ プロトコル


要求/応答ペアの形式

このトピックでは、REST データ プロトコルの要求/応答ペアの形式について説明します。

要求

要求ファイルには、有効な HTTP ヘッダが含まれている必要があります。 URL はヘッダの最初の行です。 その他のヘッダ行はオプションです。

REST データ プロトコル ハンドラは、すべての HTTP メソッド/動詞(GET、HEAD、POST、PUT、DELETE、TRACE、OPTIONS、CONNECT、および PATCH)をサポートします。

URL 行の形式は次のとおりです。

<メソッド><空白文字><REST API パス><空白><HTTP バージョン>

以下に例を示します。

PUT /rest-example/control/users/save HTTP/1.1

要求にボディが含まれる場合は、空白行を使用してボディをヘッダから離します。

以下の例では、ボディが含まれる要求を JSON 形式で示します。

PUT /rest-example/control/users/save HTTP/1.1
accept: application/json
content-Type: application/json
Connection: Keep-Alive
User-Agent: LISA

{
  "user": {
    "emailAddress": "test@test.com",
    "firstName": "first-9",
    "lastName": "last-9",
    "password": "aaaaaaaa",
    "username": "dmxxx-009"
  }
}

JSON または XML ボディは、単一の行にまとめることができます。

{ "user": { "emailAddress": "test@test.com","firstName": "first-9", "lastName": "last-9", "password": "aaaaaaaa", "username": "dmxxx-009"  }}

応答

応答ファイルには、HTTP 応答コードが含まれます。 このファイルには、ヘッダおよびボディを含めることができます。 応答コードは、ファイル内の最初の行である必要があります。形式は以下のとおりです。

<HTTP バージョン><空白文字><HTTP 応答コード>

以下に、ボディがある応答の例を示します。

HTTP/1.1 200

"user":{"emailAddress":"lisa.simpson@itko.com","firstName":"lisa",
"lastName":"simpson","password":"60fAFoq+W0R4HrLgsfPodkWRw9I=",
"phoneNumber":"","username":"lisa_simpson"}}

応答に応答コード行が含まれない場合、応答コードはデフォルトで 200 (OK)になります。

ルールの確認および変更

仮想サービス イメージ レコーダおよび[要求/応答ペアからの仮想サービス]インターフェースには、REST データ プロトコルが作成したルールを確認および変更できるページが含まれます。

以下の図は、仮想サービス イメージ レコーダのウィンドウを示しています。

[REST データ プロトコル]画面のスクリーン キャプチャ。

上部ペイン([URI ルール])には、ルールが表示されます。 ルールを選択すると、下部ペイン([一致するトラフィックのサンプル])にルールに一致するトラフィックのサンプルが表示されます。 表示される行の最大数を設定するには、lisa.properties ファイル内の lisa.protocol.rest.editor.observedtraffic.max プロパティを設定します。

ルールに一致しない HTTP 要求のリストを表示するには、[一致しないトラフィック]をクリックします。 ルールが収集されたトラフィックすべてに一致する場合、このリストは空です。 表示される要求の最大数を設定するには、lisa.properties ファイル内の lisa.protocol.rest.editor.unmatchedtraffic.max プロパティを設定します。

[URI ルール]ペインでは、ルールを追加、更新、並べ替え、および削除できます。

VSE の REST データ プロトコルの[一致しないトラフィック]ウィンドウ

ルール内のパラメータをもっと意味のある名前に置換できます。 以下に例を示します。

GET /Service/rest/customer/{customerid}/order/{orderid}

同じ操作に一致する複数のルールを作成できます。 ルールは表示された順に照合されます。 そのため、リストの下の位置にあるルールが一致すると予想しているときに、リストの上の位置にあるルールが一致する可能性があります。 順序を変更するには、並べ替えボタンを使用します。

ルールを削除する場合は、[一致しないトラフィック]をクリックして、キャプチャされたトラフィックに対するルールを削除した場合の影響を確認します。

以下の設定プロパティの値を変更するには、[プロパティ]をクリックします。

[プロパティ]をクリックすることにより、トラフィックの再分析を実行できます。[プロパティ]ページが表示されたら、値を変更せずに[OK]をクリックします。 たとえば、スクリプタブル データ プロトコルと REST データ プロトコルをチェーン化した後、これを実行する場合があります。

最大変更数

この数を超えると変動が大きすぎるのでルールを生成する必要があると認識される、トークンに対して許可される変更の最大数を定義します。

URI を「/」文字で区切られた「トークン」のリストと考えます。 たとえば、「GET /rest/user/1234」という URI には以下のトークンが含まれます。

デフォルト値を変更するには、lisa.properties ファイル内の lisa.protocol.rest.maxChanges プロパティを設定します。

開始位置

REST データ プロトコルが変数トークンの検索を開始する URL 内の位置を定義します。

開始位置は、URI を構成しているトークンのリスト内のトークンのインデックスです。 たとえば、以下の URI があるとします。

GET /service/rest/customers"

「GET」は位置 0 にあります。また、「customers」は位置 3 にあります。

デフォルト値を変更するには、lisa.properties ファイル内の lisa.protocol.rest.startPosition プロパティを設定します。

ID 識別の正規表現

HTTP 要求のリソース識別子を検出するには、REST データ プロトコルが使用する正規表現文字列を定義します。 デフォルト値を変更するには、lisa.properties ファイル内の lisa.protocol.rest.idPattern プロパティを設定します。

URL パラメータ プレフィックス

REST データ プロトコルがルールのパラメータに使用するプレフィックスを定義します。

この設定の目的は、ユーザは変数であることを知っていても、アナライザが自動検出しない可能性がある特定のパターンに従うトークンをアナライザが識別できるように支援することです。

たとえば、以下の URI があるとします。

GET /rest/user/person-1234-dev

ユーザは、person-nnnn-nnn という形式のユーザ ID が必ず「user」の後に続くことを知っています。 この場合、このパターンを直接検出する正規表現を定義できます。 この例では、正規表現は以下のとおりです。

person-[0-9]{4}-[a-z]{3}

デフォルト値を変更するには、lisa.properties ファイル内の lisa.protocol.rest.parameterBaseName プロパティを設定します。

これらのプロパティの 1 つ以上の値を変更した場合、このデータ プロトコルは記録されたトラフィックを再分析します。

以下の図は、[アナライザ プロパティ]ウィンドウを示しています。

VSE の REST データ プロトコルの[アナライザ プロパティ]ウィンドウ