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.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またはRequest。
-
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
(任意)
戻り値