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