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