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.16HTTP(S) DELETEリクエストを送信し、そのレスポンスを返します。 このメソッドは、コンテキストからリクエストクッキーを設定し、レスポンスからコンテキストクッキーを更新します。 このメソッドは自動的にリダイレクトに従います。
使用例
APIRequestContext.delete(url);
APIRequestContext.delete(url, options);
引数
-
ターゲットURL。
-
options
RequestOptions (オプション)追加: 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)));
引数
-
urlOrRequest
String | Request#ターゲットURL、またはすべてのパラメータを取得するリクエスト。
-
options
RequestOptions (オプション)追加: 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。
-
options
RequestOptions (オプション)追加: v1.18#オプションのリクエストパラメータ。
戻り値
head
追加: v1.16HTTP(S) HEADリクエストを送信し、そのレスポンスを返します。 このメソッドは、コンテキストからリクエストクッキーを設定し、レスポンスからコンテキストクッキーを更新します。 このメソッドは自動的にリダイレクトに従います。
使用例
APIRequestContext.head(url);
APIRequestContext.head(url, options);
引数
-
ターゲットURL。
-
options
RequestOptions (オプション)追加: v1.18#オプションのリクエストパラメータ。
戻り値
patch
追加: v1.16HTTP(S) PATCHリクエストを送信し、そのレスポンスを返します。 このメソッドは、コンテキストからリクエストクッキーを設定し、レスポンスからコンテキストクッキーを更新します。 このメソッドは自動的にリダイレクトに従います。
使用例
APIRequestContext.patch(url);
APIRequestContext.patch(url, options);
引数
-
ターゲットURL。
-
options
RequestOptions (オプション)追加: 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。
-
options
RequestOptions (オプション)追加: v1.18#オプションのリクエストパラメータ。
戻り値
put
追加: v1.16HTTP(S) PUTリクエストを送信し、そのレスポンスを返します。 このメソッドは、コンテキストからリクエストクッキーを設定し、レスポンスからコンテキストクッキーを更新します。 このメソッドは自動的にリダイレクトに従います。
使用例
APIRequestContext.put(url);
APIRequestContext.put(url, options);
引数
-
ターゲットURL。
-
options
RequestOptions (オプション)追加: v1.18#オプションのリクエストパラメータ。
戻り値
storageState
追加: v1.16このリクエストコンテキストのストレージ状態を返します。コンストラクタに渡された場合、現在のクッキーとローカルストレージのスナップショットが含まれます。
使用例
APIRequestContext.storageState();
APIRequestContext.storageState(options);
引数
options
ApiRequestContext.StorageStateOptions
(オプション)
戻り値