APIRequestContext
此 API 用于 Web API 测试。您可以使用它来触发 API 端点、配置微服务、准备环境或为您的端到端测试服务。
每个 Playwright 浏览器上下文都与其关联 APIRequestContext 实例,该实例与浏览器上下文共享 Cookie 存储,并且可以通过 BrowserContext.request() 或 Page.request() 访问。也可以通过调用 APIRequest.newContext() 手动创建一个新的 APIRequestContext 实例。
Cookie 管理
由 BrowserContext.request() 和 Page.request() 返回的 APIRequestContext 与相应的 BrowserContext 共享 Cookie 存储。每个 API 请求都将拥有使用浏览器上下文中的值填充的 Cookie
标头。如果 API 响应包含 Set-Cookie
标头,它将自动更新 BrowserContext Cookie,并且从页面发出的请求将获取它们。这意味着,如果您使用此 API 登录,则您的端到端测试将处于登录状态,反之亦然。
如果您希望 API 请求不干扰浏览器 Cookie,则应通过调用 APIRequest.newContext() 创建一个新的 APIRequestContext。此类 APIRequestContext
对象将拥有自己的隔离 Cookie 存储。
方法
delete
新增于:v1.16发送 HTTP(S) DELETE 请求并返回其响应。此方法将从上下文中填充请求 Cookie,并从响应中更新上下文 Cookie。此方法将自动跟随重定向。
用法
APIRequestContext.delete(url);
APIRequestContext.delete(url, options);
参数
-
目标 URL。
-
options
RequestOptions (可选)新增于:v1.18#可选请求参数。
返回值
dispose
新增于:v1.16由 APIRequestContext.get() 和类似方法返回的所有响应都存储在内存中,以便您以后可以调用 APIResponse.body()。此方法将其所有资源丢弃,在已丢弃的 APIRequestContext 上调用任何方法都将引发异常。
用法
APIRequestContext.dispose();
APIRequestContext.dispose(options);
参数
返回值
fetch
新增于:v1.16发送 HTTP(S) 请求并返回其响应。此方法将从上下文中填充请求 Cookie,并从响应中更新上下文 Cookie。此方法将自动跟随重定向。
用法
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));
在请求正文中发送文件(s) 的常用方法是将它们作为表单字段上传,并使用 multipart/form-data
编码,方法是指定 multipart
参数
// 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发送 HTTP(S) GET 请求并返回其响应。此方法将从上下文中填充请求 Cookie,并从响应中更新上下文 Cookie。此方法将自动跟随重定向。
用法
请求参数可以使用 params
选项配置,它们将被序列化为 URL 搜索参数
request.get("https://example.com/api/getText", RequestOptions.create()
.setQueryParam("isbn", "1234")
.setQueryParam("page", 23));
参数
-
目标 URL。
-
options
RequestOptions (可选)新增于:v1.18#可选请求参数。
返回值
head
新增于:v1.16发送 HTTP(S) HEAD 请求并返回其响应。此方法将从上下文中填充请求 Cookie,并从响应中更新上下文 Cookie。此方法将自动跟随重定向。
用法
APIRequestContext.head(url);
APIRequestContext.head(url, options);
参数
-
目标 URL。
-
options
RequestOptions (可选)新增于:v1.18#可选请求参数。
返回值
patch
新增于:v1.16发送 HTTP(S) PATCH 请求并返回其响应。此方法将从上下文中填充请求 Cookie,并从响应中更新上下文 Cookie。此方法将自动跟随重定向。
用法
APIRequestContext.patch(url);
APIRequestContext.patch(url, options);
参数
-
目标 URL。
-
options
RequestOptions (可选)新增于:v1.18#可选请求参数。
返回值
post
新增于:v1.16发送 HTTP(S) POST 请求并返回其响应。此方法将从上下文中填充请求 Cookie,并从响应中更新上下文 Cookie。此方法将自动跟随重定向。
用法
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")
));
在请求正文中发送文件(s) 的常用方法是将它们作为表单字段上传,并使用 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.16发送 HTTP(S) PUT 请求并返回其响应。此方法将从上下文中填充请求 Cookie,并从响应中更新上下文 Cookie。此方法将自动跟随重定向。
用法
APIRequestContext.put(url);
APIRequestContext.put(url, options);
参数
-
目标 URL。
-
options
RequestOptions (可选)新增于:v1.18#可选请求参数。
返回值
storageState
新增于:v1.16返回此请求上下文的存储状态,包含当前 Cookie 和本地存储快照(如果已传递给构造函数)。
用法
APIRequestContext.storageState();
APIRequestContext.storageState(options);
参数
options
ApiRequestContext.StorageStateOptions
(可选)
返回值