メインコンテンツにスキップ

Route

Page.route() または BrowserContext.route() でネットワークルートが設定されるたびに、Route オブジェクトはルートを処理することを可能にします。

ネットワークの詳細はこちらをご覧ください。


メソッド

abort

v1.9 より前に追加 route.abort

ルートのリクエストを中止します。

使用例

Route.abort();
Route.abort(errorCode);

引数

  • errorCode String (オプション)#

    オプションのエラーコード。デフォルトは failed で、以下の中から選択できます。

    • 'aborted' - 操作が中止されました(ユーザー操作によるもの)
    • 'accessdenied' - ネットワーク以外のリソースへのアクセス許可が拒否されました
    • 'addressunreachable' - IPアドレスに到達できません。これは通常、指定されたホストまたはネットワークへのルートがないことを意味します。
    • 'blockedbyclient' - クライアントがリクエストをブロックすることを選択しました。
    • 'blockedbyresponse' - レスポンスが要件(たとえば、'X-Frame-Options' および 'Content-Security-Policy' の ancestor チェック)とともに配信されたため、リクエストが失敗しました。
    • 'connectionaborted' - 送信されたデータに対する ACK を受信しなかった結果、接続がタイムアウトしました。
    • 'connectionclosed' - 接続が閉じられました(TCP FIN に対応)。
    • 'connectionfailed' - 接続試行が失敗しました。
    • 'connectionrefused' - 接続試行が拒否されました。
    • 'connectionreset' - 接続がリセットされました(TCP RST に対応)。
    • 'internetdisconnected' - インターネット接続が失われました。
    • 'namenotresolved' - ホスト名を解決できませんでした。
    • 'timedout' - 操作がタイムアウトしました。
    • 'failed' - 一般的なエラーが発生しました。

戻り値


fallback

v1.23 で追加 route.fallback

オプションのオーバーライドでルートのリクエストを続行します。このメソッドは Route.resume() に似ていますが、リクエストを送信する前に他のマッチングハンドラーが呼び出される点が異なります。

使用例

複数のルートが指定されたパターンに一致する場合、それらは登録とは逆の順序で実行されます。そうすることで、最後に登録されたルートは常に以前のすべてのルートをオーバーライドできます。以下の例では、リクエストは一番下のハンドラーによって最初に処理され、次に前のハンドラーにフォールバックし、最後に最初に登録されたルートによって中止されます。

page.route("**/*", route -> {
// Runs last.
route.abort();
});

page.route("**/*", route -> {
// Runs second.
route.fallback();
});

page.route("**/*", route -> {
// Runs first.
route.fallback();
});

複数のルートを登録することは、API 呼び出しとページリソース、または GET リクエストと POST リクエストなど、さまざまな種類のリクエストを処理するために個別のハンドラーが必要な場合に役立ちます(以下の例を参照)。

// Handle GET requests.
page.route("**/*", route -> {
if (!route.request().method().equals("GET")) {
route.fallback();
return;
}
// Handling GET only.
// ...
});

// Handle POST requests.
page.route("**/*", route -> {
if (!route.request().method().equals("POST")) {
route.fallback();
return;
}
// Handling POST only.
// ...
});

また、後続のハンドラーにフォールバックしながらリクエストを変更することもできます。これにより、中間ルートハンドラーはリクエストの URL、メソッド、ヘッダー、および postData を変更できます。

page.route("**/*", route -> {
// Override headers
Map<String, String> headers = new HashMap<>(route.request().headers());
headers.put("foo", "foo-value"); // set "foo" header
headers.remove("bar"); // remove "bar" header
route.fallback(new Route.ResumeOptions().setHeaders(headers));
});

リクエストをすぐにネットワークに送信するには、Route.resume() を使用します。その場合、他のマッチングハンドラーは呼び出されません。

引数

  • options Route.FallbackOptions (オプション)
    • setHeaders Map<String, String> (オプション)#

      設定されている場合、リクエストの HTTP ヘッダーを変更します。ヘッダー値は文字列に変換されます。

    • setMethod String (オプション)#

      設定されている場合、リクエストメソッド(例:GET または POST)を変更します。

    • setPostData String | byte[] (オプション)#

      設定されている場合、リクエストのポストデータを変更します。

    • setUrl String (オプション)#

      設定されている場合、リクエストの URL を変更します。新しい URL は元の URL と同じプロトコルである必要があります。URL を変更してもルートのマッチングには影響しません。すべてのルートは元のリクエスト URL を使用してマッチングされます。

戻り値


fetch

v1.29 で追加 route.fetch

レスポンスを変更して fulfill できるように、リクエストを実行して結果を取得しますが、fulfill はしません。

使用例

page.route("https://dog.ceo/api/breeds/list/all", route -> {
APIResponse response = route.fetch();
JsonObject json = new Gson().fromJson(response.text(), JsonObject.class);
JsonObject message = itemObj.get("json").getAsJsonObject();
message.set("big_red_dog", new JsonArray());
route.fulfill(new Route.FulfillOptions()
.setResponse(response)
.setBody(json.toString()));
});

引数

  • options Route.FetchOptions (オプション)
    • setHeaders Map<String, String> (オプション)#

      設定されている場合、リクエストの HTTP ヘッダーを変更します。ヘッダー値は文字列に変換されます。

    • setMaxRedirects int (オプション)v1.31 で追加#

      自動的に追跡されるリクエストリダイレクトの最大数。数を超えるとエラーがスローされます。デフォルトは 20 です。リダイレクトを追跡しない場合は 0 を渡します。

    • setMaxRetries int (オプション)v1.46 で追加#

      ネットワークエラーを再試行する最大回数。現在、ECONNRESET エラーのみが再試行されます。HTTP レスポンスコードに基づいて再試行することはありません。制限を超えるとエラーがスローされます。デフォルトは 0 - 再試行なしです。

    • setMethod String (オプション)#

      設定されている場合、リクエストメソッド(例:GET または POST)を変更します。

    • setPostData String | byte[] (オプション)#

      設定されている場合、リクエストのポストデータを変更します。

    • setTimeout double (オプション)v1.33 で追加#

      リクエストタイムアウト(ミリ秒単位)。デフォルトは 30000 (30 秒) です。タイムアウトを無効にするには 0 を渡します。

    • setUrl String (オプション)#

      設定されている場合、リクエストの URL を変更します。新しい URL は元の URL と同じプロトコルである必要があります。

戻り値

詳細

setHeaders オプションは、フェッチされたリクエストと、それによって開始されたリダイレクトにも適用されることに注意してください。setHeaders を元のリクエストにのみ適用し、リダイレクトには適用しない場合は、代わりに Route.resume() を調べてください。


fulfill

v1.9 より前に追加 route.fulfill

指定されたレスポンスでルートのリクエストを fulfill します。

使用例

すべてのリクエストを 404 レスポンスで fulfill する例

page.route("**/*", route -> {
route.fulfill(new Route.FulfillOptions()
.setStatus(404)
.setContentType("text/plain")
.setBody("Not Found!"));
});

静的ファイルを提供する例

page.route("**/xhr_endpoint", route -> route.fulfill(
new Route.FulfillOptions().setPath(Paths.get("mock_data.json"))));

引数

  • options Route.FulfillOptions (オプション)
    • setBody String (オプション)#

      オプションのレスポンスボディ(テキスト形式)。

    • setBodyBytes byte[] (オプション)v1.9 で追加#

      オプションのレスポンスボディ(生バイト形式)。

    • setContentType String (オプション)#

      設定されている場合、Content-Type レスポンスヘッダーの設定と同じです。

    • setHeaders Map<String, String> (オプション)#

      レスポンスヘッダー。ヘッダー値は文字列に変換されます。

    • setPath Path (オプション)#

      応答するファイルパス。コンテンツタイプはファイル拡張子から推測されます。path が相対パスの場合、現在の作業ディレクトリからの相対パスとして解決されます。

    • setResponse APIResponse (オプション)v1.15 で追加#

      APIResponse でルートのリクエストを fulfill します。レスポンスの個々のフィールド(ヘッダーなど)は、fulfill オプションを使用してオーバーライドできます。

    • setStatus int (オプション)#

      レスポンスステータスコード。デフォルトは 200 です。

戻り値


request

v1.9 より前に追加 route.request

ルーティングされるリクエスト。

使用例

Route.request();

戻り値


resume

v1.9 より前に追加 route.resume

オプションのオーバーライドでルートのリクエストをネットワークに送信します。

使用例

page.route("**/*", route -> {
// Override headers
Map<String, String> headers = new HashMap<>(route.request().headers());
headers.put("foo", "foo-value"); // set "foo" header
headers.remove("bar"); // remove "bar" header
route.resume(new Route.ResumeOptions().setHeaders(headers));
});

引数

  • options Route.ResumeOptions (オプション)
    • setHeaders Map<String, String> (オプション)#

      設定されている場合、リクエストの HTTP ヘッダーを変更します。ヘッダー値は文字列に変換されます。

    • setMethod String (オプション)#

      設定されている場合、リクエストメソッド(例:GET または POST)を変更します。

    • setPostData String | byte[] (オプション)#

      設定されている場合、リクエストのポストデータを変更します。

    • setUrl String (オプション)#

      設定されている場合、リクエストの URL を変更します。新しい URL は元の URL と同じプロトコルである必要があります。

戻り値

詳細

setHeaders オプションは、ルーティングされたリクエストと、それによって開始されるリダイレクトの両方に適用されます。ただし、setUrlsetMethod、および setPostData は、元のリクエストにのみ適用され、リダイレクトされたリクエストには引き継がれません。

Route.resume() は、リクエストをすぐにネットワークに送信します。他のマッチングハンドラーは呼び出されません。チェーン内の次のマッチングハンドラーを呼び出す場合は、Route.fallback() を使用してください。