応答処理の例
このトピックでは、いくつかの HTTP レスポンス処理の例を調べます。 例を試してみるには、 auth-requests および test-responses 要求のコレクションを調べましょう。
レスポンスのヘッダー、本文、コンテンツタイプを確認する
この例では、以下の点を検証するためのテストをいくつか作成します。
リクエストが正常に実行され、レスポンスステータスが 200です。
ヘッダーはレスポンスボディ内で受信されます。
レスポンスのコンテンツタイプは アプリケーション /JSON です。
テストを作成するには、 テスト メソッドを クライアント オブジェクトで呼び出します。 テスト内では、 client オブジェクトの アサート メソッドを呼び出して特定の条件をアサートし、 応答オブジェクトのさまざまなプロパティを参照して検証できます。
グローバル変数を使用する
この例では、受信したレスポンスから値を グローバル変数に格納し、後続のリクエストで使用できるようにします。
最初のリクエストには、受信したレスポンス本文の認証トークンを client.global の auth_token 変数に保存するレスポンスハンドラースクリプトが含まれます。 これを実現するには、 client.global.set(VariableName, VariableValue) 構造を使用します。 VariableValue 引数には、サーバーから返された レスポンス本文の token フィールドの値を使用します。 この値は、 "auth_token" 変数に割り当てられます。
リクエストが実行されると、 auth_token 変数は後続のリクエスト ({{auth_token}} 変数内) および応答ハンドラースクリプト (client.global.get("auth_token") 構造を使用) からアクセスできるようになります。
レスポンスヘッダーから値を取得するには、 valueOf メソッドを headers オブジェクトで使用します。 同じ名前のヘッダーが複数受信された場合は、代わりに valuesOf メソッドを使用してください。 これにより、すべてのレスポンスヘッダー値の配列が返されます。
クッキーをグローバル変数として保存する
この例では、クッキーを返すリクエストを送信し、レスポンスハンドラースクリプトを使用してレスポンスからそのクッキーを抽出し、その値を グローバル変数として保存し、後続のリクエストで再利用します。
エンドポイントがレスポンスで SOCS クッキーを返すとします。 response.cookiesByName("SOCS") メソッドを使用して、レスポンスからこのクッキーを見つけて抽出します。
Cookie の値をグローバル変数(client.global.set() )として保存することで、後続のリクエストで再利用できます。 次のリクエストでは、 Cookie ヘッダー内の {{SOCS_COOKIE}} を参照して、抽出した値を送信します。
イベントストリームの各行を処理する
イベントストリームをサブスクライブすると、新しいデータが利用可能になると、サーバーがクライアントにイベントを自動的に送信します。 このデータは、サーバー送信イベントまたは改改行コード JSON(NDJSON) の形式にすることができます。 RubyMine では、HTTP クライアント response.body.onEachLine メソッドを使用して、このイベントストリームの各行で関数を呼び出すことができます。
金価格に関する情報を定期的に送信するサーバーがあるとします。 この例では、次のことを行う応答ハンドラースクリプトを作成しましょう。
サーバーから受信したデータの各チャンク(JSON オブジェクト)を取得し、価格値をログに記録します。 リクエストを実行すると、 サービス ツールウィンドウの レスポンスハンドラー タブでログに記録された情報を表示できます。
イベント数が 10 を超えると、受信データの処理を停止します。 これはイベントストリームからの登録解除にはなりません。HTTP 接続が開いている限りイベントを受信し続けます(サービス ツールウィンドウの コンソール タブを確認してください)。
取得したデータチャンクをテスト: 価格が 45 未満の場合はテストが失敗します。 テスト結果は サービス ツールウィンドウの テスト タブで確認できます。
DOM API を使用して XML レスポンスを処理する
レスポンスの Content-Type が XML (たとえば application/xml や text/xml) の場合、HTTP クライアントは response.body を DOM Document として公開します。 レスポンスを解析および検証するには、 サポートされている DOM メソッドを直接使用できます。 文字列操作や正規表現を適用する場合は、 new XMLSerializer().serializeToString(response.body) を使用して DOM Document を文字列にシリアル化できます。
XML レスポンスの検証
サーバーが朝食メニューを XML 形式で返すとします。 この例では、レスポンスハンドラースクリプトが XML ドキュメントから値を抽出し、テストを使用して検証します。
このスクリプトは、DOM Document 形式の response.body を解析し、以下の処理を実行します。
getElementsByTagName()を使用してすべての食べ物要素を取得します。少なくとも 1 つの
食べ物要素が存在することを保証します。最初の
食べ物要素を選択します。 次に、textContentを使用して、そのネストされた名前およびcalories要素のテキスト値を抽出します。client.assert()を使用して、抽出された値が期待値と一致することを確認します。