APIRequestContext
此 API 用于 Web API 测试。您可以使用它来触发 API 端点,配置微服务,为您的 e2e 测试准备环境或服务。
每个 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 登录,您的 e2e 测试将处于登录状态,反之亦然。
如果您希望 API 请求不干扰浏览器 Cookie,您应该通过调用 apiRequest.newContext() 创建一个新的 APIRequestContext。 这样的 APIRequestContext
对象将拥有自己隔离的 Cookie 存储。
方法
delete
添加于版本: v1.16发送 HTTP(S) DELETE 请求并返回其响应。 此方法将从上下文中填充请求 Cookie,并从响应中更新上下文 Cookie。 此方法将自动跟踪重定向。
用法
await apiRequestContext.delete(url);
await apiRequestContext.delete(url, options);
参数
-
目标 URL。
-
options
Object (可选)-
data
string | Buffer | Serializable (可选)添加于版本: v1.17#允许设置请求的 post 数据。 如果 data 参数是一个对象,它将被序列化为 JSON 字符串,并且如果未显式设置,则
content-type
标头将设置为application/json
。 否则,如果未显式设置,则content-type
标头将设置为application/octet-stream
。 -
failOnStatusCode
boolean (可选)#是否在 2xx 和 3xx 之外的响应代码上抛出错误。 默认情况下,为所有状态代码返回响应对象。
-
form
Object<string, string | number | boolean> | FormData (可选)添加于版本: v1.17#提供一个对象,该对象将使用
application/x-www-form-urlencoded
编码序列化为 html 表单,并作为此请求正文发送。 如果指定了此参数,则content-type
标头将设置为application/x-www-form-urlencoded
,除非显式提供。 -
headers
Object<string, string> (可选)#允许设置 HTTP 标头。 这些标头将应用于提取的请求以及由此请求启动的任何重定向。
-
ignoreHTTPSErrors
boolean (可选)#是否在发送网络请求时忽略 HTTPS 错误。 默认为
false
。 -
maxRedirects
number (可选)添加于版本: v1.26#将自动跟踪的最大请求重定向数。 如果超过该数量,将抛出错误。 默认为
20
。 传递0
以不跟踪重定向。 -
maxRetries
number (可选)添加于版本: v1.46#网络错误应重试的最大次数。 当前仅重试
ECONNRESET
错误。 不会基于 HTTP 响应代码进行重试。 如果超过限制,将抛出错误。 默认为0
- 不重试。 -
multipart
FormData | Object<string, string | number | boolean | ReadStream | Object> (可选)添加于版本: v1.17#提供一个对象,该对象将使用
multipart/form-data
编码序列化为 html 表单,并作为此请求正文发送。 如果指定了此参数,则content-type
标头将设置为multipart/form-data
,除非显式提供。 文件值可以作为fs.ReadStream
或包含文件名、mime-type 及其内容的文件类对象传递。 -
params
Object<string, string | number | boolean> | URLSearchParams | string (可选)#要与 URL 一起发送的查询参数。
-
请求超时时间,以毫秒为单位。 默认为
30000
(30 秒)。 传递0
以禁用超时。
-
返回值
dispose
添加于版本: v1.16由 apiRequestContext.get() 和类似方法返回的所有响应都存储在内存中,以便您稍后可以调用 apiResponse.body()。 此方法会丢弃其所有资源,在已释放的 APIRequestContext 上调用任何方法都将抛出异常。
用法
await apiRequestContext.dispose();
await apiRequestContext.dispose(options);
参数
返回值
fetch
添加于版本: v1.16发送 HTTP(S) 请求并返回其响应。 此方法将从上下文中填充请求 Cookie,并从响应中更新上下文 Cookie。 此方法将自动跟踪重定向。
用法
JSON 对象可以直接传递给请求
await request.fetch('https://example.com/api/createBook', {
method: 'post',
data: {
title: 'Book Title',
author: 'John Doe',
}
});
在请求正文中发送文件的常用方法是以 multipart/form-data
编码将其作为表单字段上传,通过指定 multipart
参数
const form = new FormData();
form.set('name', 'John');
form.append('name', 'Doe');
// Send two file fields with the same name.
form.append('file', new File(['console.log(2024);'], 'f1.js', { type: 'text/javascript' }));
form.append('file', new File(['hello'], 'f2.txt', { type: 'text/plain' }));
await request.fetch('https://example.com/api/uploadForm', {
multipart: form
});
参数
-
urlOrRequest
string | Request#目标 URL 或从中获取所有参数的 Request。
-
options
Object (可选)-
data
string | Buffer | Serializable (可选)#允许设置请求的 post 数据。 如果 data 参数是一个对象,它将被序列化为 JSON 字符串,并且如果未显式设置,则
content-type
标头将设置为application/json
。 否则,如果未显式设置,则content-type
标头将设置为application/octet-stream
。 -
failOnStatusCode
boolean (可选)#是否在 2xx 和 3xx 之外的响应代码上抛出错误。 默认情况下,为所有状态代码返回响应对象。
-
form
Object<string, string | number | boolean> | FormData (可选)#提供一个对象,该对象将使用
application/x-www-form-urlencoded
编码序列化为 html 表单,并作为此请求正文发送。 如果指定了此参数,则content-type
标头将设置为application/x-www-form-urlencoded
,除非显式提供。 -
headers
Object<string, string> (可选)#允许设置 HTTP 标头。 这些标头将应用于提取的请求以及由此请求启动的任何重定向。
-
ignoreHTTPSErrors
boolean (可选)#是否在发送网络请求时忽略 HTTPS 错误。 默认为
false
。 -
maxRedirects
number (可选)添加于版本: v1.26#将自动跟踪的最大请求重定向数。 如果超过该数量,将抛出错误。 默认为
20
。 传递0
以不跟踪重定向。 -
maxRetries
number (可选)添加于版本: v1.46#网络错误应重试的最大次数。 当前仅重试
ECONNRESET
错误。 不会基于 HTTP 响应代码进行重试。 如果超过限制,将抛出错误。 默认为0
- 不重试。 -
multipart
FormData | Object<string, string | number | boolean | ReadStream | Object> (可选)#提供一个对象,该对象将使用
multipart/form-data
编码序列化为 html 表单,并作为此请求正文发送。 如果指定了此参数,则content-type
标头将设置为multipart/form-data
,除非显式提供。 文件值可以作为fs.ReadStream
或包含文件名、mime-type 及其内容的文件类对象传递。 -
params
Object<string, string | number | boolean> | URLSearchParams | string (可选)#要与 URL 一起发送的查询参数。
-
请求超时时间,以毫秒为单位。 默认为
30000
(30 秒)。 传递0
以禁用超时。
-
返回值
get
添加于版本: v1.16发送 HTTP(S) GET 请求并返回其响应。 此方法将从上下文中填充请求 Cookie,并从响应中更新上下文 Cookie。 此方法将自动跟踪重定向。
用法
请求参数可以使用 params
选项配置,它们将被序列化到 URL 查询参数中
// Passing params as object
await request.get('https://example.com/api/getText', {
params: {
'isbn': '1234',
'page': 23,
}
});
// Passing params as URLSearchParams
const searchParams = new URLSearchParams();
searchParams.set('isbn', '1234');
searchParams.append('page', 23);
searchParams.append('page', 24);
await request.get('https://example.com/api/getText', { params: searchParams });
// Passing params as string
const queryString = 'isbn=1234&page=23&page=24';
await request.get('https://example.com/api/getText', { params: queryString });
参数
-
目标 URL。
-
options
Object (可选)-
data
string | Buffer | Serializable (可选)添加于版本: v1.26#允许设置请求的 post 数据。 如果 data 参数是一个对象,它将被序列化为 JSON 字符串,并且如果未显式设置,则
content-type
标头将设置为application/json
。 否则,如果未显式设置,则content-type
标头将设置为application/octet-stream
。 -
failOnStatusCode
boolean (可选)#是否在 2xx 和 3xx 之外的响应代码上抛出错误。 默认情况下,为所有状态代码返回响应对象。
-
form
Object<string, string | number | boolean> | FormData (可选)添加于版本: v1.26#提供一个对象,该对象将使用
application/x-www-form-urlencoded
编码序列化为 html 表单,并作为此请求正文发送。 如果指定了此参数,则content-type
标头将设置为application/x-www-form-urlencoded
,除非显式提供。 -
headers
Object<string, string> (可选)#允许设置 HTTP 标头。 这些标头将应用于提取的请求以及由此请求启动的任何重定向。
-
ignoreHTTPSErrors
boolean (可选)#是否在发送网络请求时忽略 HTTPS 错误。 默认为
false
。 -
maxRedirects
number (可选)添加于版本: v1.26#将自动跟踪的最大请求重定向数。 如果超过该数量,将抛出错误。 默认为
20
。 传递0
以不跟踪重定向。 -
maxRetries
number (可选)添加于版本: v1.46#网络错误应重试的最大次数。 当前仅重试
ECONNRESET
错误。 不会基于 HTTP 响应代码进行重试。 如果超过限制,将抛出错误。 默认为0
- 不重试。 -
multipart
FormData | Object<string, string | number | boolean | ReadStream | Object> (可选)添加于版本: v1.26#提供一个对象,该对象将使用
multipart/form-data
编码序列化为 html 表单,并作为此请求正文发送。 如果指定了此参数,则content-type
标头将设置为multipart/form-data
,除非显式提供。 文件值可以作为fs.ReadStream
或包含文件名、mime-type 及其内容的文件类对象传递。 -
params
Object<string, string | number | boolean> | URLSearchParams | string (可选)#要与 URL 一起发送的查询参数。
-
请求超时时间,以毫秒为单位。 默认为
30000
(30 秒)。 传递0
以禁用超时。
-
返回值
head
添加于版本: v1.16发送 HTTP(S) HEAD 请求并返回其响应。 此方法将从上下文中填充请求 Cookie,并从响应中更新上下文 Cookie。 此方法将自动跟踪重定向。
用法
await apiRequestContext.head(url);
await apiRequestContext.head(url, options);
参数
-
目标 URL。
-
options
Object (可选)-
data
string | Buffer | Serializable (可选)添加于版本: v1.26#允许设置请求的 post 数据。 如果 data 参数是一个对象,它将被序列化为 JSON 字符串,并且如果未显式设置,则
content-type
标头将设置为application/json
。 否则,如果未显式设置,则content-type
标头将设置为application/octet-stream
。 -
failOnStatusCode
boolean (可选)#是否在 2xx 和 3xx 之外的响应代码上抛出错误。 默认情况下,为所有状态代码返回响应对象。
-
form
Object<string, string | number | boolean> | FormData (可选)添加于版本: v1.26#提供一个对象,该对象将使用
application/x-www-form-urlencoded
编码序列化为 html 表单,并作为此请求正文发送。 如果指定了此参数,则content-type
标头将设置为application/x-www-form-urlencoded
,除非显式提供。 -
headers
Object<string, string> (可选)#允许设置 HTTP 标头。 这些标头将应用于提取的请求以及由此请求启动的任何重定向。
-
ignoreHTTPSErrors
boolean (可选)#是否在发送网络请求时忽略 HTTPS 错误。 默认为
false
。 -
maxRedirects
number (可选)添加于版本: v1.26#将自动跟踪的最大请求重定向数。 如果超过该数量,将抛出错误。 默认为
20
。 传递0
以不跟踪重定向。 -
maxRetries
number (可选)添加于版本: v1.46#网络错误应重试的最大次数。 当前仅重试
ECONNRESET
错误。 不会基于 HTTP 响应代码进行重试。 如果超过限制,将抛出错误。 默认为0
- 不重试。 -
multipart
FormData | Object<string, string | number | boolean | ReadStream | Object> (可选)添加于版本: v1.26#提供一个对象,该对象将使用
multipart/form-data
编码序列化为 html 表单,并作为此请求正文发送。 如果指定了此参数,则content-type
标头将设置为multipart/form-data
,除非显式提供。 文件值可以作为fs.ReadStream
或包含文件名、mime-type 及其内容的文件类对象传递。 -
params
Object<string, string | number | boolean> | URLSearchParams | string (可选)#要与 URL 一起发送的查询参数。
-
请求超时时间,以毫秒为单位。 默认为
30000
(30 秒)。 传递0
以禁用超时。
-
返回值
patch
添加于版本: v1.16发送 HTTP(S) PATCH 请求并返回其响应。 此方法将从上下文中填充请求 Cookie,并从响应中更新上下文 Cookie。 此方法将自动跟踪重定向。
用法
await apiRequestContext.patch(url);
await apiRequestContext.patch(url, options);
参数
-
目标 URL。
-
options
Object (可选)-
data
string | Buffer | Serializable (可选)#允许设置请求的 post 数据。 如果 data 参数是一个对象,它将被序列化为 JSON 字符串,并且如果未显式设置,则
content-type
标头将设置为application/json
。 否则,如果未显式设置,则content-type
标头将设置为application/octet-stream
。 -
failOnStatusCode
boolean (可选)#是否在 2xx 和 3xx 之外的响应代码上抛出错误。 默认情况下,为所有状态代码返回响应对象。
-
form
Object<string, string | number | boolean> | FormData (可选)#提供一个对象,该对象将使用
application/x-www-form-urlencoded
编码序列化为 html 表单,并作为此请求正文发送。 如果指定了此参数,则content-type
标头将设置为application/x-www-form-urlencoded
,除非显式提供。 -
headers
Object<string, string> (可选)#允许设置 HTTP 标头。 这些标头将应用于提取的请求以及由此请求启动的任何重定向。
-
ignoreHTTPSErrors
boolean (可选)#是否在发送网络请求时忽略 HTTPS 错误。 默认为
false
。 -
maxRedirects
number (可选)添加于版本: v1.26#将自动跟踪的最大请求重定向数。 如果超过该数量,将抛出错误。 默认为
20
。 传递0
以不跟踪重定向。 -
maxRetries
number (可选)添加于版本: v1.46#网络错误应重试的最大次数。 当前仅重试
ECONNRESET
错误。 不会基于 HTTP 响应代码进行重试。 如果超过限制,将抛出错误。 默认为0
- 不重试。 -
multipart
FormData | Object<string, string | number | boolean | ReadStream | Object> (可选)#提供一个对象,该对象将使用
multipart/form-data
编码序列化为 html 表单,并作为此请求正文发送。 如果指定了此参数,则content-type
标头将设置为multipart/form-data
,除非显式提供。 文件值可以作为fs.ReadStream
或包含文件名、mime-type 及其内容的文件类对象传递。 -
params
Object<string, string | number | boolean> | URLSearchParams | string (可选)#要与 URL 一起发送的查询参数。
-
请求超时时间,以毫秒为单位。 默认为
30000
(30 秒)。 传递0
以禁用超时。
-
返回值
post
添加于版本: v1.16发送 HTTP(S) POST 请求并返回其响应。此方法将从上下文中填充请求 Cookie,并从响应中更新上下文 Cookie。此方法将自动跟随重定向。
用法
JSON 对象可以直接传递给请求
await request.post('https://example.com/api/createBook', {
data: {
title: 'Book Title',
author: 'John Doe',
}
});
要向服务器发送表单数据,请使用 form
选项。其值将被编码到请求体中,编码方式为 application/x-www-form-urlencoded
(请参阅下文了解如何使用 multipart/form-data
表单编码来发送文件)
await request.post('https://example.com/api/findBook', {
form: {
title: 'Book Title',
author: 'John Doe',
}
});
在请求正文中发送文件(或多个文件)的常用方法是将它们作为表单字段以 multipart/form-data
编码上传。使用 FormData 构建请求体,并将其作为 multipart
参数传递给请求
const form = new FormData();
form.set('name', 'John');
form.append('name', 'Doe');
// Send two file fields with the same name.
form.append('file', new File(['console.log(2024);'], 'f1.js', { type: 'text/javascript' }));
form.append('file', new File(['hello'], 'f2.txt', { type: 'text/plain' }));
await request.post('https://example.com/api/uploadForm', {
multipart: form
});
参数
-
目标 URL。
-
options
Object (可选)-
data
string | Buffer | Serializable (可选)#允许设置请求的 post 数据。 如果 data 参数是一个对象,它将被序列化为 JSON 字符串,并且如果未显式设置,则
content-type
标头将设置为application/json
。 否则,如果未显式设置,则content-type
标头将设置为application/octet-stream
。 -
failOnStatusCode
boolean (可选)#是否在 2xx 和 3xx 之外的响应代码上抛出错误。 默认情况下,为所有状态代码返回响应对象。
-
form
Object<string, string | number | boolean> | FormData (可选)#提供一个对象,该对象将使用
application/x-www-form-urlencoded
编码序列化为 html 表单,并作为此请求正文发送。 如果指定了此参数,则content-type
标头将设置为application/x-www-form-urlencoded
,除非显式提供。 -
headers
Object<string, string> (可选)#允许设置 HTTP 标头。 这些标头将应用于提取的请求以及由此请求启动的任何重定向。
-
ignoreHTTPSErrors
boolean (可选)#是否在发送网络请求时忽略 HTTPS 错误。 默认为
false
。 -
maxRedirects
number (可选)添加于版本: v1.26#将自动跟踪的最大请求重定向数。 如果超过该数量,将抛出错误。 默认为
20
。 传递0
以不跟踪重定向。 -
maxRetries
number (可选)添加于版本: v1.46#网络错误应重试的最大次数。 当前仅重试
ECONNRESET
错误。 不会基于 HTTP 响应代码进行重试。 如果超过限制,将抛出错误。 默认为0
- 不重试。 -
multipart
FormData | Object<string, string | number | boolean | ReadStream | Object> (可选)#提供一个对象,该对象将使用
multipart/form-data
编码序列化为 html 表单,并作为此请求正文发送。 如果指定了此参数,则content-type
标头将设置为multipart/form-data
,除非显式提供。 文件值可以作为fs.ReadStream
或包含文件名、mime-type 及其内容的文件类对象传递。 -
params
Object<string, string | number | boolean> | URLSearchParams | string (可选)#要与 URL 一起发送的查询参数。
-
请求超时时间,以毫秒为单位。 默认为
30000
(30 秒)。 传递0
以禁用超时。
-
返回值
put
添加于版本: v1.16发送 HTTP(S) PUT 请求并返回其响应。此方法将从上下文中填充请求 Cookie,并从响应中更新上下文 Cookie。此方法将自动跟随重定向。
用法
await apiRequestContext.put(url);
await apiRequestContext.put(url, options);
参数
-
目标 URL。
-
options
Object (可选)-
data
string | Buffer | Serializable (可选)#允许设置请求的 post 数据。 如果 data 参数是一个对象,它将被序列化为 JSON 字符串,并且如果未显式设置,则
content-type
标头将设置为application/json
。 否则,如果未显式设置,则content-type
标头将设置为application/octet-stream
。 -
failOnStatusCode
boolean (可选)#是否在 2xx 和 3xx 之外的响应代码上抛出错误。 默认情况下,为所有状态代码返回响应对象。
-
form
Object<string, string | number | boolean> | FormData (可选)#提供一个对象,该对象将使用
application/x-www-form-urlencoded
编码序列化为 html 表单,并作为此请求正文发送。 如果指定了此参数,则content-type
标头将设置为application/x-www-form-urlencoded
,除非显式提供。 -
headers
Object<string, string> (可选)#允许设置 HTTP 标头。 这些标头将应用于提取的请求以及由此请求启动的任何重定向。
-
ignoreHTTPSErrors
boolean (可选)#是否在发送网络请求时忽略 HTTPS 错误。 默认为
false
。 -
maxRedirects
number (可选)添加于版本: v1.26#将自动跟踪的最大请求重定向数。 如果超过该数量,将抛出错误。 默认为
20
。 传递0
以不跟踪重定向。 -
maxRetries
number (可选)添加于版本: v1.46#网络错误应重试的最大次数。 当前仅重试
ECONNRESET
错误。 不会基于 HTTP 响应代码进行重试。 如果超过限制,将抛出错误。 默认为0
- 不重试。 -
multipart
FormData | Object<string, string | number | boolean | ReadStream | Object> (可选)#提供一个对象,该对象将使用
multipart/form-data
编码序列化为 html 表单,并作为此请求正文发送。 如果指定了此参数,则content-type
标头将设置为multipart/form-data
,除非显式提供。 文件值可以作为fs.ReadStream
或包含文件名、mime-type 及其内容的文件类对象传递。 -
params
Object<string, string | number | boolean> | URLSearchParams | string (可选)#要与 URL 一起发送的查询参数。
-
请求超时时间,以毫秒为单位。 默认为
30000
(30 秒)。 传递0
以禁用超时。
-
返回值
storageState
添加于版本: v1.16返回此请求上下文的存储状态,如果已传递给构造函数,则包含当前 Cookie 和本地存储快照。
用法
await apiRequestContext.storageState();
await apiRequestContext.storageState(options);
参数
options
Object (可选)
返回值