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

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' の祖先チェック)を満たさずに配信されたため、リクエストが失敗しました。
    • '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

リクエストを実行し、応答を履行せずに結果を取得します。これにより、応答を修正してから履行することができます。

使用方法

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

指定された応答でルートのリクエストを履行します。

使用方法

すべてのリクエストを404応答で履行する例

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オプションを使用してオーバーライドできます。

    • 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()を使用してください。

警告

Cookieヘッダーはこのメソッドを使用してオーバーライドすることはできません。値が提供された場合でも無視され、クッキーはブラウザのクッキー保存領域から読み込まれます。カスタムクッキーを設定するには、BrowserContext.addCookies()を使用してください。