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

APIRequestContext

このAPIは、Web APIテストに使用されます。APIエンドポイントのトリガー、マイクロサービスの構成、e2eテストのための環境またはサービスの準備に使用できます。

各Playwrightブラウザコンテキストには、ブラウザコンテキストとクッキー共有するAPIRequestContextインスタンスが関連付けられており、BrowserContext.request()またはPage.request()経由でアクセスできます。また、APIRequest.newContext()を呼び出すことで、新しいAPIRequestContextインスタンスを手動で作成することも可能です。

クッキー管理

BrowserContext.request()およびPage.request()によって返されるAPIRequestContextは、対応するBrowserContextとクッキー共有ストレージを共有します。各APIリクエストには、ブラウザコンテキストからの値でCookieヘッダーが設定されます。APIレスポンスにSet-Cookieヘッダーが含まれる場合、それは自動的にBrowserContextクッキーを更新し、ページから行われたリクエストはそれらを認識します。これは、このAPIを使用してログインした場合、e2eテストもログイン状態になり、その逆もまた同様であることを意味します。

APIリクエストをブラウザのクッキーに干渉させたくない場合は、APIRequest.newContext()を呼び出して新しいAPIRequestContextを作成する必要があります。このようなAPIRequestContextオブジェクトは、独自の分離されたクッキーストレージを持ちます。


メソッド

delete

追加されたバージョン: v1.16 apiRequestContext.delete

HTTP(S) DELETEリクエストを送信し、そのレスポンスを返します。このメソッドは、コンテキストからリクエストクッキーを設定し、レスポンスからコンテキストクッキーを更新します。このメソッドは自動的にリダイレクトをフォローします。

使用法

APIRequestContext.delete(url);
APIRequestContext.delete(url, options);

引数

  • url String#

    ターゲットURL。

  • options RequestOptions (任意)追加されたバージョン: v1.18#

    任意の要求パラメータ。

戻り値


dispose

追加されたバージョン: v1.16 apiRequestContext.dispose

APIRequestContext.get()や類似のメソッドによって返されるすべてのレスポンスはメモリに保存され、後でAPIResponse.body()を呼び出すことができます。このメソッドはすべてのリソースを破棄し、破棄されたAPIRequestContextの任意のメソッドを呼び出すと例外がスローされます。

使用法

APIRequestContext.dispose();
APIRequestContext.dispose(options);

引数

  • options ApiRequestContext.DisposeOptions (任意)
    • setReason String (任意)追加されたバージョン: v1.45#

      コンテキストの破棄によって中断された操作に報告される理由。

戻り値


fetch

追加されたバージョン: v1.16 apiRequestContext.fetch

HTTP(S)リクエストを送信し、そのレスポンスを返します。このメソッドは、コンテキストからリクエストクッキーを設定し、レスポンスからコンテキストクッキーを更新します。このメソッドは自動的にリダイレクトをフォローします。

使用法

JSONオブジェクトはリクエストに直接渡すことができます。

Map<String, Object> data = new HashMap();
data.put("title", "Book Title");
data.put("body", "John Doe");
request.fetch("https://example.com/api/createBook", RequestOptions.create().setMethod("post").setData(data));

リクエストの本文でファイルを送信する一般的な方法は、multipartパラメータを指定することで、multipart/form-dataエンコーディングでフォームフィールドとしてアップロードすることです。

// Pass file path to the form data constructor:
Path file = Paths.get("team.csv");
APIResponse response = request.fetch("https://example.com/api/uploadTeamList",
RequestOptions.create().setMethod("post").setMultipart(
FormData.create().set("fileField", file)));

// Or you can pass the file content directly as FilePayload object:
FilePayload filePayload = new FilePayload("f.js", "text/javascript",
"console.log(2022);".getBytes(StandardCharsets.UTF_8));
APIResponse response = request.fetch("https://example.com/api/uploadScript",
RequestOptions.create().setMethod("post").setMultipart(
FormData.create().set("fileField", filePayload)));

引数

  • urlOrRequest String | Request#

    すべてのパラメータを取得するターゲットURLまたはRequest。

  • options RequestOptions (任意)追加されたバージョン: v1.18#

    任意の要求パラメータ。

戻り値


get

追加されたバージョン: v1.16 apiRequestContext.get

HTTP(S) GETリクエストを送信し、そのレスポンスを返します。このメソッドは、コンテキストからリクエストクッキーを設定し、レスポンスからコンテキストクッキーを更新します。このメソッドは自動的にリダイレクトをフォローします。

使用法

リクエストパラメータはparamsオプションで設定でき、URL検索パラメータにシリアル化されます。

request.get("https://example.com/api/getText", RequestOptions.create()
.setQueryParam("isbn", "1234")
.setQueryParam("page", 23));

引数

  • url String#

    ターゲットURL。

  • options RequestOptions (任意)追加されたバージョン: v1.18#

    任意の要求パラメータ。

戻り値


head

追加されたバージョン: v1.16 apiRequestContext.head

HTTP(S) HEADリクエストを送信し、そのレスポンスを返します。このメソッドは、コンテキストからリクエストクッキーを設定し、レスポンスからコンテキストクッキーを更新します。このメソッドは自動的にリダイレクトをフォローします。

使用法

APIRequestContext.head(url);
APIRequestContext.head(url, options);

引数

  • url String#

    ターゲットURL。

  • options RequestOptions (任意)追加されたバージョン: v1.18#

    任意の要求パラメータ。

戻り値


patch

追加されたバージョン: v1.16 apiRequestContext.patch

HTTP(S) PATCHリクエストを送信し、そのレスポンスを返します。このメソッドは、コンテキストからリクエストクッキーを設定し、レスポンスからコンテキストクッキーを更新します。このメソッドは自動的にリダイレクトをフォローします。

使用法

APIRequestContext.patch(url);
APIRequestContext.patch(url, options);

引数

  • url String#

    ターゲットURL。

  • options RequestOptions (任意)追加されたバージョン: v1.18#

    任意の要求パラメータ。

戻り値


post

追加されたバージョン: v1.16 apiRequestContext.post

HTTP(S) POSTリクエストを送信し、そのレスポンスを返します。このメソッドは、コンテキストからリクエストクッキーを設定し、レスポンスからコンテキストクッキーを更新します。このメソッドは自動的にリダイレクトをフォローします。

使用法

JSONオブジェクトはリクエストに直接渡すことができます。

Map<String, Object> data = new HashMap();
data.put("title", "Book Title");
data.put("body", "John Doe");
request.post("https://example.com/api/createBook", RequestOptions.create().setData(data));

フォームデータをサーバーに送信するには、formオプションを使用します。その値はapplication/x-www-form-urlencodedエンコーディングでリクエストボディにエンコードされます(ファイルを送信するためのmultipart/form-dataフォームエンコーディングの使用方法については下記を参照してください)。

request.post("https://example.com/api/findBook", RequestOptions.create().setForm(
FormData.create().set("title", "Book Title").set("body", "John Doe")
));

リクエストの本文でファイルを送信する一般的な方法は、multipart/form-dataエンコーディングでフォームフィールドとしてアップロードすることです。FormDataを使用してリクエストボディを構築し、それをmultipartパラメータとしてリクエストに渡します。

// Pass file path to the form data constructor:
Path file = Paths.get("team.csv");
APIResponse response = request.post("https://example.com/api/uploadTeamList",
RequestOptions.create().setMultipart(
FormData.create().set("fileField", file)));

// Or you can pass the file content directly as FilePayload object:
FilePayload filePayload1 = new FilePayload("f1.js", "text/javascript",
"console.log(2022);".getBytes(StandardCharsets.UTF_8));
APIResponse response = request.post("https://example.com/api/uploadScript",
RequestOptions.create().setMultipart(
FormData.create().set("fileField", filePayload)));

引数

  • url String#

    ターゲットURL。

  • options RequestOptions (任意)追加されたバージョン: v1.18#

    任意の要求パラメータ。

戻り値


put

追加されたバージョン: v1.16 apiRequestContext.put

HTTP(S) PUTリクエストを送信し、そのレスポンスを返します。このメソッドは、コンテキストからリクエストクッキーを設定し、レスポンスからコンテキストクッキーを更新します。このメソッドは自動的にリダイレクトをフォローします。

使用法

APIRequestContext.put(url);
APIRequestContext.put(url, options);

引数

  • url String#

    ターゲットURL。

  • options RequestOptions (任意)追加されたバージョン: v1.18#

    任意の要求パラメータ。

戻り値


storageState

追加されたバージョン: v1.16 apiRequestContext.storageState

このリクエストコンテキストのストレージ状態を返します。現在のクッキーと、コンストラクタに渡された場合はローカルストレージのスナップショットが含まれます。

使用法

APIRequestContext.storageState();
APIRequestContext.storageState(options);

引数

  • options ApiRequestContext.StorageStateOptions (任意)
    • setIndexedDB boolean (任意)追加されたバージョン: v1.51#

      ストレージ状態のスナップショットにIndexedDBを含めるにはtrueに設定します。

    • setPath Path (任意)#

      ストレージ状態を保存するファイルパス。setPathが相対パスの場合、現在の作業ディレクトリを基準に解決されます。パスが指定されていない場合でもストレージ状態は返されますが、ディスクには保存されません。

戻り値