APIRequestContext
此 API 用於 Web API 測試。您可以使用它來觸發 API 端點、配置微服務、準備環境或您的 e2e 測試服務。
每個 Playwright 瀏覽器內容都與之關聯 APIRequestContext 實例,該實例與瀏覽器內容共享 Cookie 儲存空間,並且可以透過 browserContext.request 或 page.request 存取。也可以透過呼叫 apiRequest.newContext() 手動建立新的 APIRequestContext 實例。
Cookie 管理
APIRequestContext 由 browserContext.request 和 page.request 傳回,與對應的 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
物件 (選用)-
data
字串 | Buffer | 可序列化物件 (選用)新增於:v1.17#允許設定請求的 post 資料。如果 data 參數是物件,它將被序列化為 json 字串,並且如果未明確設定,則
content-type
標頭將設定為application/json
。否則,如果未明確設定,則content-type
標頭將設定為application/octet-stream
。 -
是否在 2xx 和 3xx 以外的回應代碼上擲回錯誤。預設情況下,會為所有狀態代碼傳回回應物件。
-
form
物件<字串, 字串 | 數字 | 布林值> | FormData (選用)新增於:v1.17#提供一個物件,該物件將使用
application/x-www-form-urlencoded
編碼序列化為 html 表單,並作為此請求正文傳送。如果指定此參數,除非明確提供,否則content-type
標頭將設定為application/x-www-form-urlencoded
。 -
允許設定 HTTP 標頭。這些標頭將應用於提取的請求以及由此請求啟動的任何重新導向。
-
是否在傳送網路請求時忽略 HTTPS 錯誤。預設為
false
。 -
maxRedirects
數字 (選用)新增於:v1.26#將自動追蹤的最大請求重新導向次數。如果超過次數,將擲回錯誤。預設為
20
。傳遞0
以不追蹤重新導向。 -
網路錯誤應重試的最大次數。目前僅重試
ECONNRESET
錯誤。不根據 HTTP 回應代碼重試。如果超過限制,將擲回錯誤。預設為0
- 不重試。 -
multipart
FormData | 物件<字串, 字串 | 數字 | 布林值 | ReadStream | 物件> (選用)新增於:v1.17#提供一個物件,該物件將使用
multipart/form-data
編碼序列化為 html 表單,並作為此請求正文傳送。如果指定此參數,除非明確提供,否則content-type
標頭將設定為multipart/form-data
。檔案值可以作為fs.ReadStream
或包含檔案名稱、mime 類型及其內容的類檔案物件傳遞。 -
params
物件<字串, 字串 | 數字 | 布林值> | URLSearchParams | 字串 (選用)#要與 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
});
引數
-
目標 URL 或 Request 以從中取得所有參數。
-
options
物件 (選用)-
data
字串 | Buffer | 可序列化物件 (選用)#允許設定請求的 post 資料。如果 data 參數是物件,它將被序列化為 json 字串,並且如果未明確設定,則
content-type
標頭將設定為application/json
。否則,如果未明確設定,則content-type
標頭將設定為application/octet-stream
。 -
是否在 2xx 和 3xx 以外的回應代碼上擲回錯誤。預設情況下,會為所有狀態代碼傳回回應物件。
-
form
物件<字串, 字串 | 數字 | 布林值> | FormData (選用)#提供一個物件,該物件將使用
application/x-www-form-urlencoded
編碼序列化為 html 表單,並作為此請求正文傳送。如果指定此參數,除非明確提供,否則content-type
標頭將設定為application/x-www-form-urlencoded
。 -
允許設定 HTTP 標頭。這些標頭將應用於提取的請求以及由此請求啟動的任何重新導向。
-
是否在傳送網路請求時忽略 HTTPS 錯誤。預設為
false
。 -
maxRedirects
數字 (選用)新增於:v1.26#將自動追蹤的最大請求重新導向次數。如果超過次數,將擲回錯誤。預設為
20
。傳遞0
以不追蹤重新導向。 -
網路錯誤應重試的最大次數。目前僅重試
ECONNRESET
錯誤。不根據 HTTP 回應代碼重試。如果超過限制,將擲回錯誤。預設為0
- 不重試。 -
multipart
FormData | 物件<字串, 字串 | 數字 | 布林值 | ReadStream | 物件> (選用)#提供一個物件,該物件將使用
multipart/form-data
編碼序列化為 html 表單,並作為此請求正文傳送。如果指定此參數,除非明確提供,否則content-type
標頭將設定為multipart/form-data
。檔案值可以作為fs.ReadStream
或包含檔案名稱、mime 類型及其內容的類檔案物件傳遞。 -
params
物件<字串, 字串 | 數字 | 布林值> | URLSearchParams | 字串 (選用)#要與 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
物件 (選用)-
data
字串 | Buffer | 可序列化物件 (選用)新增於:v1.26#允許設定請求的 post 資料。如果 data 參數是物件,它將被序列化為 json 字串,並且如果未明確設定,則
content-type
標頭將設定為application/json
。否則,如果未明確設定,則content-type
標頭將設定為application/octet-stream
。 -
是否在 2xx 和 3xx 以外的回應代碼上擲回錯誤。預設情況下,會為所有狀態代碼傳回回應物件。
-
form
物件<字串, 字串 | 數字 | 布林值> | FormData (選用)新增於:v1.26#提供一個物件,該物件將使用
application/x-www-form-urlencoded
編碼序列化為 html 表單,並作為此請求正文傳送。如果指定此參數,除非明確提供,否則content-type
標頭將設定為application/x-www-form-urlencoded
。 -
允許設定 HTTP 標頭。這些標頭將應用於提取的請求以及由此請求啟動的任何重新導向。
-
是否在傳送網路請求時忽略 HTTPS 錯誤。預設為
false
。 -
maxRedirects
數字 (選用)新增於:v1.26#將自動追蹤的最大請求重新導向次數。如果超過次數,將擲回錯誤。預設為
20
。傳遞0
以不追蹤重新導向。 -
網路錯誤應重試的最大次數。目前僅重試
ECONNRESET
錯誤。不根據 HTTP 回應代碼重試。如果超過限制,將擲回錯誤。預設為0
- 不重試。 -
multipart
FormData | 物件<字串, 字串 | 數字 | 布林值 | ReadStream | 物件> (選用)新增於:v1.26#提供一個物件,該物件將使用
multipart/form-data
編碼序列化為 html 表單,並作為此請求正文傳送。如果指定此參數,除非明確提供,否則content-type
標頭將設定為multipart/form-data
。檔案值可以作為fs.ReadStream
或包含檔案名稱、mime 類型及其內容的類檔案物件傳遞。 -
params
物件<字串, 字串 | 數字 | 布林值> | URLSearchParams | 字串 (選用)#要與 URL 一起傳送的查詢參數。
-
請求逾時時間,以毫秒為單位。預設為
30000
(30 秒)。傳遞0
以停用逾時。
-
傳回
head
新增於:v1.16傳送 HTTP(S) HEAD 請求並傳回其回應。此方法將從內容中填充請求 Cookie,並從回應中更新內容 Cookie。此方法將自動追蹤重新導向。
用法
await apiRequestContext.head(url);
await apiRequestContext.head(url, options);
引數
-
目標 URL。
-
options
物件 (選用)-
data
字串 | Buffer | 可序列化物件 (選用)新增於:v1.26#允許設定請求的 post 資料。如果 data 參數是物件,它將被序列化為 json 字串,並且如果未明確設定,則
content-type
標頭將設定為application/json
。否則,如果未明確設定,則content-type
標頭將設定為application/octet-stream
。 -
是否在 2xx 和 3xx 以外的回應代碼上擲回錯誤。預設情況下,會為所有狀態代碼傳回回應物件。
-
form
物件<字串, 字串 | 數字 | 布林值> | FormData (選用)新增於:v1.26#提供一個物件,該物件將使用
application/x-www-form-urlencoded
編碼序列化為 html 表單,並作為此請求正文傳送。如果指定此參數,除非明確提供,否則content-type
標頭將設定為application/x-www-form-urlencoded
。 -
允許設定 HTTP 標頭。這些標頭將應用於提取的請求以及由此請求啟動的任何重新導向。
-
是否在傳送網路請求時忽略 HTTPS 錯誤。預設為
false
。 -
maxRedirects
數字 (選用)新增於:v1.26#將自動追蹤的最大請求重新導向次數。如果超過次數,將擲回錯誤。預設為
20
。傳遞0
以不追蹤重新導向。 -
網路錯誤應重試的最大次數。目前僅重試
ECONNRESET
錯誤。不根據 HTTP 回應代碼重試。如果超過限制,將擲回錯誤。預設為0
- 不重試。 -
multipart
FormData | 物件<字串, 字串 | 數字 | 布林值 | ReadStream | 物件> (選用)新增於:v1.26#提供一個物件,該物件將使用
multipart/form-data
編碼序列化為 html 表單,並作為此請求正文傳送。如果指定此參數,除非明確提供,否則content-type
標頭將設定為multipart/form-data
。檔案值可以作為fs.ReadStream
或包含檔案名稱、mime 類型及其內容的類檔案物件傳遞。 -
params
物件<字串, 字串 | 數字 | 布林值> | URLSearchParams | 字串 (選用)#要與 URL 一起傳送的查詢參數。
-
請求逾時時間,以毫秒為單位。預設為
30000
(30 秒)。傳遞0
以停用逾時。
-
傳回
patch
新增於:v1.16傳送 HTTP(S) PATCH 請求並傳回其回應。此方法將從內容中填充請求 Cookie,並從回應中更新內容 Cookie。此方法將自動追蹤重新導向。
用法
await apiRequestContext.patch(url);
await apiRequestContext.patch(url, options);
引數
-
目標 URL。
-
options
物件 (選用)-
data
字串 | Buffer | 可序列化物件 (選用)#允許設定請求的 post 資料。如果 data 參數是物件,它將被序列化為 json 字串,並且如果未明確設定,則
content-type
標頭將設定為application/json
。否則,如果未明確設定,則content-type
標頭將設定為application/octet-stream
。 -
是否在 2xx 和 3xx 以外的回應代碼上擲回錯誤。預設情況下,會為所有狀態代碼傳回回應物件。
-
form
物件<字串, 字串 | 數字 | 布林值> | FormData (選用)#提供一個物件,該物件將使用
application/x-www-form-urlencoded
編碼序列化為 html 表單,並作為此請求正文傳送。如果指定此參數,除非明確提供,否則content-type
標頭將設定為application/x-www-form-urlencoded
。 -
允許設定 HTTP 標頭。這些標頭將應用於提取的請求以及由此請求啟動的任何重新導向。
-
是否在傳送網路請求時忽略 HTTPS 錯誤。預設為
false
。 -
maxRedirects
數字 (選用)新增於:v1.26#將自動追蹤的最大請求重新導向次數。如果超過次數,將擲回錯誤。預設為
20
。傳遞0
以不追蹤重新導向。 -
網路錯誤應重試的最大次數。目前僅重試
ECONNRESET
錯誤。不根據 HTTP 回應代碼重試。如果超過限制,將擲回錯誤。預設為0
- 不重試。 -
multipart
FormData | 物件<字串, 字串 | 數字 | 布林值 | ReadStream | 物件> (選用)#提供一個物件,該物件將使用
multipart/form-data
編碼序列化為 html 表單,並作為此請求正文傳送。如果指定此參數,除非明確提供,否則content-type
標頭將設定為multipart/form-data
。檔案值可以作為fs.ReadStream
或包含檔案名稱、mime 類型及其內容的類檔案物件傳遞。 -
params
物件<字串, 字串 | 數字 | 布林值> | URLSearchParams | 字串 (選用)#要與 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
物件 (選用)-
data
字串 | Buffer | 可序列化物件 (選用)#允許設定請求的 post 資料。如果 data 參數是物件,它將被序列化為 json 字串,並且如果未明確設定,則
content-type
標頭將設定為application/json
。否則,如果未明確設定,則content-type
標頭將設定為application/octet-stream
。 -
是否在 2xx 和 3xx 以外的回應代碼上擲回錯誤。預設情況下,會為所有狀態代碼傳回回應物件。
-
form
物件<字串, 字串 | 數字 | 布林值> | FormData (選用)#提供一個物件,該物件將使用
application/x-www-form-urlencoded
編碼序列化為 html 表單,並作為此請求正文傳送。如果指定此參數,除非明確提供,否則content-type
標頭將設定為application/x-www-form-urlencoded
。 -
允許設定 HTTP 標頭。這些標頭將應用於提取的請求以及由此請求啟動的任何重新導向。
-
ignoreHTTPSErrors
boolean (選填)#是否在傳送網路請求時忽略 HTTPS 錯誤。預設為
false
。 -
maxRedirects
數字 (選用)新增於:v1.26#將自動追蹤的最大請求重新導向次數。如果超過次數,將擲回錯誤。預設為
20
。傳遞0
以不追蹤重新導向。 -
網路錯誤應重試的最大次數。目前僅重試
ECONNRESET
錯誤。不根據 HTTP 回應代碼重試。如果超過限制,將擲回錯誤。預設為0
- 不重試。 -
multipart
FormData | Object<string, string | number | boolean | ReadStream | Object> (選填)#提供一個物件,該物件將使用
multipart/form-data
編碼序列化為 html 表單,並作為此請求正文傳送。如果指定此參數,除非明確提供,否則content-type
標頭將設定為multipart/form-data
。檔案值可以作為fs.ReadStream
或包含檔案名稱、mime 類型及其內容的類檔案物件傳遞。 -
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
物件 (選用)-
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
數字 (選用)新增於:v1.26#將自動追蹤的最大請求重新導向次數。如果超過次數,將擲回錯誤。預設為
20
。傳遞0
以不追蹤重新導向。 -
網路錯誤應重試的最大次數。目前僅重試
ECONNRESET
錯誤。不根據 HTTP 回應代碼重試。如果超過限制,將擲回錯誤。預設為0
- 不重試。 -
multipart
FormData | Object<string, string | number | boolean | ReadStream | Object> (選填)#提供一個物件,該物件將使用
multipart/form-data
編碼序列化為 html 表單,並作為此請求正文傳送。如果指定此參數,除非明確提供,否則content-type
標頭將設定為multipart/form-data
。檔案值可以作為fs.ReadStream
或包含檔案名稱、mime 類型及其內容的類檔案物件傳遞。 -
params
Object<string, string | number | boolean> | URLSearchParams | string (選填)#要與 URL 一起傳送的查詢參數。
-
請求逾時時間,以毫秒為單位。預設為
30000
(30 秒)。傳遞0
以停用逾時。
-
傳回
storageState
新增於:v1.16傳回此請求上下文的儲存狀態,如果已傳遞至建構函式,則包含目前的 Cookie 和本機儲存空間快照。
用法
await apiRequestContext.storageState();
await apiRequestContext.storageState(options);
引數
options
物件 (選用)
傳回