APIRequestContext
このAPIは、Web APIテストに使用されます。APIエンドポイントのトリガー、マイクロサービスの構成、e2eテストのための環境やサービスの準備に使用できます。
Playwrightの各ブラウザコンテキストには、ブラウザコンテキストとCookieストレージを共有するAPIRequestContextインスタンスが関連付けられており、BrowserContext.request()またはPage.request()を介してアクセスできます。APIRequest.newContext()を呼び出して、新しいAPIRequestContextインスタンスを手動で作成することも可能です。
クッキー管理
BrowserContext.request()およびPage.request()によって返されるAPIRequestContextは、対応するBrowserContextとCookieストレージを共有します。各APIリクエストには、ブラウザコンテキストの値がCookieヘッダーに格納されます。APIレスポンスにSet-Cookieヘッダーが含まれている場合、それは自動的にBrowserContextのCookieを更新し、ページから行われたリクエストはそれらを取得します。これは、このAPIを使用してログインした場合、e2eテストもログイン状態になり、その逆も同様であることを意味します。
APIリクエストがブラウザのCookieに干渉しないようにしたい場合は、APIRequest.newContext()を呼び出して新しいAPIRequestContextを作成する必要があります。このようなAPIRequestContextオブジェクトは、独自の分離されたCookieストレージを持ちます。
メソッド
delete
追加バージョン: v1.16HTTP(S) DELETEリクエストを送信し、そのレスポンスを返します。このメソッドは、コンテキストからリクエストのクッキーを設定し、レスポンスからコンテキストのクッキーを更新します。このメソッドは自動的にリダイレクトを追跡します。
使用法
APIRequestContext.delete(url);
APIRequestContext.delete(url, options);
引数
- 
ターゲットURL。 
- 
optionsRequestOptions (オプション)追加: v1.18#オプションのリクエストパラメータ。 
戻り値
dispose
追加バージョン: v1.16APIRequestContext.get()および類似のメソッドによって返されるすべてのレスポンスはメモリに保存され、後でAPIResponse.body()を呼び出すことができます。このメソッドはすべてのリソースを破棄し、破棄されたAPIRequestContextでいずれかのメソッドを呼び出すと例外がスローされます。
使用法
APIRequestContext.dispose();
APIRequestContext.dispose(options);
引数
- options- ApiRequestContext.DisposeOptions(オプション)
戻り値
fetch
追加バージョン: v1.16HTTP(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)));
引数
- 
urlOrRequestString | Request#すべてのパラメータを取得するターゲットURLまたはリクエスト。 
- 
optionsRequestOptions (オプション)追加: v1.18#オプションのリクエストパラメータ。 
戻り値
get
追加バージョン: v1.16HTTP(S) GETリクエストを送信し、そのレスポンスを返します。このメソッドは、コンテキストからリクエストのクッキーを設定し、レスポンスからコンテキストのクッキーを更新します。このメソッドは自動的にリダイレクトを追跡します。
使用法
リクエストパラメータはparamsオプションで設定でき、URL検索パラメータにシリアル化されます。
request.get("https://example.com/api/getText", RequestOptions.create()
  .setQueryParam("isbn", "1234")
  .setQueryParam("page", 23));
引数
- 
ターゲットURL。 
- 
optionsRequestOptions (オプション)追加: v1.18#オプションのリクエストパラメータ。 
戻り値
head
追加バージョン: v1.16HTTP(S) HEADリクエストを送信し、そのレスポンスを返します。このメソッドは、コンテキストからリクエストのクッキーを設定し、レスポンスからコンテキストのクッキーを更新します。このメソッドは自動的にリダイレクトを追跡します。
使用法
APIRequestContext.head(url);
APIRequestContext.head(url, options);
引数
- 
ターゲットURL。 
- 
optionsRequestOptions (オプション)追加: v1.18#オプションのリクエストパラメータ。 
戻り値
patch
追加バージョン: v1.16HTTP(S) PATCHリクエストを送信し、そのレスポンスを返します。このメソッドは、コンテキストからリクエストのクッキーを設定し、レスポンスからコンテキストのクッキーを更新します。このメソッドは自動的にリダイレクトを追跡します。
使用法
APIRequestContext.patch(url);
APIRequestContext.patch(url, options);
引数
- 
ターゲットURL。 
- 
optionsRequestOptions (オプション)追加: v1.18#オプションのリクエストパラメータ。 
戻り値
post
追加バージョン: v1.16HTTP(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。 
- 
optionsRequestOptions (オプション)追加: v1.18#オプションのリクエストパラメータ。 
戻り値
put
追加バージョン: v1.16HTTP(S) PUTリクエストを送信し、そのレスポンスを返します。このメソッドは、コンテキストからリクエストのクッキーを設定し、レスポンスからコンテキストのクッキーを更新します。このメソッドは自動的にリダイレクトを追跡します。
使用法
APIRequestContext.put(url);
APIRequestContext.put(url, options);
引数
- 
ターゲットURL。 
- 
optionsRequestOptions (オプション)追加: v1.18#オプションのリクエストパラメータ。 
戻り値
storageState
追加バージョン: v1.16このリクエストコンテキストのストレージ状態を返します。コンストラクタに渡された場合、現在のクッキーとローカルストレージのスナップショットが含まれます。
使用法
APIRequestContext.storageState();
APIRequestContext.storageState(options);
引数
- options- ApiRequestContext.StorageStateOptions(オプション)
戻り値