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

APIRequestContext

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

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

Cookie管理

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、またはすべてのパラメータを取得するリクエスト。

  • 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が相対パスの場合、現在の作業ディレクトリを基準に解決されます。 パスが指定されていない場合でも、ストレージ状態は返されますが、ディスクには保存されません。

戻り値