跳到主要內容

APIRequestContext

此 API 用於 Web API 測試。您可以使用它來觸發 API 端點、配置微服務、準備環境或您的 e2e 測試服務。

每個 Playwright 瀏覽器內容都與之關聯 APIRequestContext 實例,該實例與瀏覽器內容共享 Cookie 儲存空間,並且可以透過 browserContext.requestpage.request 存取。也可以透過呼叫 apiRequest.newContext() 手動建立新的 APIRequestContext 實例。

Cookie 管理

APIRequestContextbrowserContext.requestpage.request 傳回,與對應的 BrowserContext 共享 Cookie 儲存空間。每個 API 請求都會使用瀏覽器內容中的值填充 Cookie 標頭。如果 API 回應包含 Set-Cookie 標頭,它將自動更新 BrowserContext Cookie,並且從頁面發出的請求將會接收它們。這表示如果您使用此 API 登入,您的 e2e 測試將會登入,反之亦然。

如果您希望 API 請求不干擾瀏覽器 Cookie,您應該透過呼叫 apiRequest.newContext() 建立新的 APIRequestContext。此類 APIRequestContext 物件將擁有其自己隔離的 Cookie 儲存空間。


方法

delete

新增於:v1.16 apiRequestContext.delete

傳送 HTTP(S) DELETE 請求並傳回其回應。此方法將從內容中填充請求 Cookie,並從回應中更新內容 Cookie。此方法將自動追蹤重新導向。

用法

await apiRequestContext.delete(url);
await apiRequestContext.delete(url, options);

引數

  • url 字串#

    目標 URL。

  • options 物件 (選用)

    • data 字串 | Buffer | 可序列化物件 (選用)新增於:v1.17#

      允許設定請求的 post 資料。如果 data 參數是物件,它將被序列化為 json 字串,並且如果未明確設定,則 content-type 標頭將設定為 application/json。否則,如果未明確設定,則 content-type 標頭將設定為 application/octet-stream

    • failOnStatusCode 布林值 (選用)#

      是否在 2xx 和 3xx 以外的回應代碼上擲回錯誤。預設情況下,會為所有狀態代碼傳回回應物件。

    • form 物件<字串, 字串 | 數字 | 布林值> | FormData (選用)新增於:v1.17#

      提供一個物件,該物件將使用 application/x-www-form-urlencoded 編碼序列化為 html 表單,並作為此請求正文傳送。如果指定此參數,除非明確提供,否則 content-type 標頭將設定為 application/x-www-form-urlencoded

    • headers 物件<字串, 字串> (選用)#

      允許設定 HTTP 標頭。這些標頭將應用於提取的請求以及由此請求啟動的任何重新導向。

    • ignoreHTTPSErrors 布林值 (選用)#

      是否在傳送網路請求時忽略 HTTPS 錯誤。預設為 false

    • maxRedirects 數字 (選用)新增於:v1.26#

      將自動追蹤的最大請求重新導向次數。如果超過次數,將擲回錯誤。預設為 20。傳遞 0 以不追蹤重新導向。

    • maxRetries 數字 (選用)新增於:v1.46#

      網路錯誤應重試的最大次數。目前僅重試 ECONNRESET 錯誤。不根據 HTTP 回應代碼重試。如果超過限制,將擲回錯誤。預設為 0 - 不重試。

    • multipart FormData | 物件<字串, 字串 | 數字 | 布林值 | ReadStream | 物件> (選用)新增於:v1.17#

      提供一個物件,該物件將使用 multipart/form-data 編碼序列化為 html 表單,並作為此請求正文傳送。如果指定此參數,除非明確提供,否則 content-type 標頭將設定為 multipart/form-data。檔案值可以作為 fs.ReadStream 或包含檔案名稱、mime 類型及其內容的類檔案物件傳遞。

    • params 物件<字串, 字串 | 數字 | 布林值> | URLSearchParams | 字串 (選用)#

      要與 URL 一起傳送的查詢參數。

    • timeout 數字 (選用)#

      請求逾時時間,以毫秒為單位。預設為 30000(30 秒)。傳遞 0 以停用逾時。

傳回


dispose

新增於:v1.16 apiRequestContext.dispose

apiRequestContext.get() 和類似方法傳回的所有回應都儲存在記憶體中,以便您稍後可以呼叫 apiResponse.body()。此方法會丟棄其所有資源,在已處置的 APIRequestContext 上呼叫任何方法都會擲回例外。

用法

await apiRequestContext.dispose();
await apiRequestContext.dispose(options);

引數

  • options 物件 (選用)
    • reason 字串 (選用)新增於:v1.45#

      要報告給內容處置中斷的操作的原因。

傳回


fetch

新增於:v1.16 apiRequestContext.fetch

傳送 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 字串 | Request#

    目標 URL 或 Request 以從中取得所有參數。

  • options 物件 (選用)

    • data 字串 | Buffer | 可序列化物件 (選用)#

      允許設定請求的 post 資料。如果 data 參數是物件,它將被序列化為 json 字串,並且如果未明確設定,則 content-type 標頭將設定為 application/json。否則,如果未明確設定,則 content-type 標頭將設定為 application/octet-stream

    • failOnStatusCode 布林值 (選用)#

      是否在 2xx 和 3xx 以外的回應代碼上擲回錯誤。預設情況下,會為所有狀態代碼傳回回應物件。

    • form 物件<字串, 字串 | 數字 | 布林值> | FormData (選用)#

      提供一個物件,該物件將使用 application/x-www-form-urlencoded 編碼序列化為 html 表單,並作為此請求正文傳送。如果指定此參數,除非明確提供,否則 content-type 標頭將設定為 application/x-www-form-urlencoded

    • headers 物件<字串, 字串> (選用)#

      允許設定 HTTP 標頭。這些標頭將應用於提取的請求以及由此請求啟動的任何重新導向。

    • ignoreHTTPSErrors 布林值 (選用)#

      是否在傳送網路請求時忽略 HTTPS 錯誤。預設為 false

    • maxRedirects 數字 (選用)新增於:v1.26#

      將自動追蹤的最大請求重新導向次數。如果超過次數,將擲回錯誤。預設為 20。傳遞 0 以不追蹤重新導向。

    • maxRetries 數字 (選用)新增於:v1.46#

      網路錯誤應重試的最大次數。目前僅重試 ECONNRESET 錯誤。不根據 HTTP 回應代碼重試。如果超過限制,將擲回錯誤。預設為 0 - 不重試。

    • method 字串 (選用)#

      如果設定,則變更 fetch 方法(例如 PUTPOST)。如果未指定,則使用 GET 方法。

    • multipart FormData | 物件<字串, 字串 | 數字 | 布林值 | ReadStream | 物件> (選用)#

      提供一個物件,該物件將使用 multipart/form-data 編碼序列化為 html 表單,並作為此請求正文傳送。如果指定此參數,除非明確提供,否則 content-type 標頭將設定為 multipart/form-data。檔案值可以作為 fs.ReadStream 或包含檔案名稱、mime 類型及其內容的類檔案物件傳遞。

    • params 物件<字串, 字串 | 數字 | 布林值> | URLSearchParams | 字串 (選用)#

      要與 URL 一起傳送的查詢參數。

    • timeout 數字 (選用)#

      請求逾時時間,以毫秒為單位。預設為 30000(30 秒)。傳遞 0 以停用逾時。

傳回


get

新增於:v1.16 apiRequestContext.get

傳送 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 字串#

    目標 URL。

  • options 物件 (選用)

    • data 字串 | Buffer | 可序列化物件 (選用)新增於:v1.26#

      允許設定請求的 post 資料。如果 data 參數是物件,它將被序列化為 json 字串,並且如果未明確設定,則 content-type 標頭將設定為 application/json。否則,如果未明確設定,則 content-type 標頭將設定為 application/octet-stream

    • failOnStatusCode 布林值 (選用)#

      是否在 2xx 和 3xx 以外的回應代碼上擲回錯誤。預設情況下,會為所有狀態代碼傳回回應物件。

    • form 物件<字串, 字串 | 數字 | 布林值> | FormData (選用)新增於:v1.26#

      提供一個物件,該物件將使用 application/x-www-form-urlencoded 編碼序列化為 html 表單,並作為此請求正文傳送。如果指定此參數,除非明確提供,否則 content-type 標頭將設定為 application/x-www-form-urlencoded

    • headers 物件<字串, 字串> (選用)#

      允許設定 HTTP 標頭。這些標頭將應用於提取的請求以及由此請求啟動的任何重新導向。

    • ignoreHTTPSErrors 布林值 (選用)#

      是否在傳送網路請求時忽略 HTTPS 錯誤。預設為 false

    • maxRedirects 數字 (選用)新增於:v1.26#

      將自動追蹤的最大請求重新導向次數。如果超過次數,將擲回錯誤。預設為 20。傳遞 0 以不追蹤重新導向。

    • maxRetries 數字 (選用)新增於:v1.46#

      網路錯誤應重試的最大次數。目前僅重試 ECONNRESET 錯誤。不根據 HTTP 回應代碼重試。如果超過限制,將擲回錯誤。預設為 0 - 不重試。

    • multipart FormData | 物件<字串, 字串 | 數字 | 布林值 | ReadStream | 物件> (選用)新增於:v1.26#

      提供一個物件,該物件將使用 multipart/form-data 編碼序列化為 html 表單,並作為此請求正文傳送。如果指定此參數,除非明確提供,否則 content-type 標頭將設定為 multipart/form-data。檔案值可以作為 fs.ReadStream 或包含檔案名稱、mime 類型及其內容的類檔案物件傳遞。

    • params 物件<字串, 字串 | 數字 | 布林值> | URLSearchParams | 字串 (選用)#

      要與 URL 一起傳送的查詢參數。

    • timeout 數字 (選用)#

      請求逾時時間,以毫秒為單位。預設為 30000(30 秒)。傳遞 0 以停用逾時。

傳回


head

新增於:v1.16 apiRequestContext.head

傳送 HTTP(S) HEAD 請求並傳回其回應。此方法將從內容中填充請求 Cookie,並從回應中更新內容 Cookie。此方法將自動追蹤重新導向。

用法

await apiRequestContext.head(url);
await apiRequestContext.head(url, options);

引數

  • url 字串#

    目標 URL。

  • options 物件 (選用)

    • data 字串 | Buffer | 可序列化物件 (選用)新增於:v1.26#

      允許設定請求的 post 資料。如果 data 參數是物件,它將被序列化為 json 字串,並且如果未明確設定,則 content-type 標頭將設定為 application/json。否則,如果未明確設定,則 content-type 標頭將設定為 application/octet-stream

    • failOnStatusCode 布林值 (選用)#

      是否在 2xx 和 3xx 以外的回應代碼上擲回錯誤。預設情況下,會為所有狀態代碼傳回回應物件。

    • form 物件<字串, 字串 | 數字 | 布林值> | FormData (選用)新增於:v1.26#

      提供一個物件,該物件將使用 application/x-www-form-urlencoded 編碼序列化為 html 表單,並作為此請求正文傳送。如果指定此參數,除非明確提供,否則 content-type 標頭將設定為 application/x-www-form-urlencoded

    • headers 物件<字串, 字串> (選用)#

      允許設定 HTTP 標頭。這些標頭將應用於提取的請求以及由此請求啟動的任何重新導向。

    • ignoreHTTPSErrors 布林值 (選用)#

      是否在傳送網路請求時忽略 HTTPS 錯誤。預設為 false

    • maxRedirects 數字 (選用)新增於:v1.26#

      將自動追蹤的最大請求重新導向次數。如果超過次數,將擲回錯誤。預設為 20。傳遞 0 以不追蹤重新導向。

    • maxRetries 數字 (選用)新增於:v1.46#

      網路錯誤應重試的最大次數。目前僅重試 ECONNRESET 錯誤。不根據 HTTP 回應代碼重試。如果超過限制,將擲回錯誤。預設為 0 - 不重試。

    • multipart FormData | 物件<字串, 字串 | 數字 | 布林值 | ReadStream | 物件> (選用)新增於:v1.26#

      提供一個物件,該物件將使用 multipart/form-data 編碼序列化為 html 表單,並作為此請求正文傳送。如果指定此參數,除非明確提供,否則 content-type 標頭將設定為 multipart/form-data。檔案值可以作為 fs.ReadStream 或包含檔案名稱、mime 類型及其內容的類檔案物件傳遞。

    • params 物件<字串, 字串 | 數字 | 布林值> | URLSearchParams | 字串 (選用)#

      要與 URL 一起傳送的查詢參數。

    • timeout 數字 (選用)#

      請求逾時時間,以毫秒為單位。預設為 30000(30 秒)。傳遞 0 以停用逾時。

傳回


patch

新增於:v1.16 apiRequestContext.patch

傳送 HTTP(S) PATCH 請求並傳回其回應。此方法將從內容中填充請求 Cookie,並從回應中更新內容 Cookie。此方法將自動追蹤重新導向。

用法

await apiRequestContext.patch(url);
await apiRequestContext.patch(url, options);

引數

  • url 字串#

    目標 URL。

  • options 物件 (選用)

    • data 字串 | Buffer | 可序列化物件 (選用)#

      允許設定請求的 post 資料。如果 data 參數是物件,它將被序列化為 json 字串,並且如果未明確設定,則 content-type 標頭將設定為 application/json。否則,如果未明確設定,則 content-type 標頭將設定為 application/octet-stream

    • failOnStatusCode 布林值 (選用)#

      是否在 2xx 和 3xx 以外的回應代碼上擲回錯誤。預設情況下,會為所有狀態代碼傳回回應物件。

    • form 物件<字串, 字串 | 數字 | 布林值> | FormData (選用)#

      提供一個物件,該物件將使用 application/x-www-form-urlencoded 編碼序列化為 html 表單,並作為此請求正文傳送。如果指定此參數,除非明確提供,否則 content-type 標頭將設定為 application/x-www-form-urlencoded

    • headers 物件<字串, 字串> (選用)#

      允許設定 HTTP 標頭。這些標頭將應用於提取的請求以及由此請求啟動的任何重新導向。

    • ignoreHTTPSErrors 布林值 (選用)#

      是否在傳送網路請求時忽略 HTTPS 錯誤。預設為 false

    • maxRedirects 數字 (選用)新增於:v1.26#

      將自動追蹤的最大請求重新導向次數。如果超過次數,將擲回錯誤。預設為 20。傳遞 0 以不追蹤重新導向。

    • maxRetries 數字 (選用)新增於:v1.46#

      網路錯誤應重試的最大次數。目前僅重試 ECONNRESET 錯誤。不根據 HTTP 回應代碼重試。如果超過限制,將擲回錯誤。預設為 0 - 不重試。

    • multipart FormData | 物件<字串, 字串 | 數字 | 布林值 | ReadStream | 物件> (選用)#

      提供一個物件,該物件將使用 multipart/form-data 編碼序列化為 html 表單,並作為此請求正文傳送。如果指定此參數,除非明確提供,否則 content-type 標頭將設定為 multipart/form-data。檔案值可以作為 fs.ReadStream 或包含檔案名稱、mime 類型及其內容的類檔案物件傳遞。

    • params 物件<字串, 字串 | 數字 | 布林值> | URLSearchParams | 字串 (選用)#

      要與 URL 一起傳送的查詢參數。

    • timeout 數字 (選用)#

      請求逾時時間,以毫秒為單位。預設為 30000(30 秒)。傳遞 0 以停用逾時。

傳回


post

新增於:v1.16 apiRequestContext.post

傳送 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 字串#

    目標 URL。

  • options 物件 (選用)

    • data 字串 | Buffer | 可序列化物件 (選用)#

      允許設定請求的 post 資料。如果 data 參數是物件,它將被序列化為 json 字串,並且如果未明確設定,則 content-type 標頭將設定為 application/json。否則,如果未明確設定,則 content-type 標頭將設定為 application/octet-stream

    • failOnStatusCode 布林值 (選用)#

      是否在 2xx 和 3xx 以外的回應代碼上擲回錯誤。預設情況下,會為所有狀態代碼傳回回應物件。

    • form 物件<字串, 字串 | 數字 | 布林值> | FormData (選用)#

      提供一個物件,該物件將使用 application/x-www-form-urlencoded 編碼序列化為 html 表單,並作為此請求正文傳送。如果指定此參數,除非明確提供,否則 content-type 標頭將設定為 application/x-www-form-urlencoded

    • headers 物件<字串, 字串> (選用)#

      允許設定 HTTP 標頭。這些標頭將應用於提取的請求以及由此請求啟動的任何重新導向。

    • ignoreHTTPSErrors boolean (選填)#

      是否在傳送網路請求時忽略 HTTPS 錯誤。預設為 false

    • maxRedirects 數字 (選用)新增於:v1.26#

      將自動追蹤的最大請求重新導向次數。如果超過次數,將擲回錯誤。預設為 20。傳遞 0 以不追蹤重新導向。

    • maxRetries 數字 (選用)新增於: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 類型及其內容的類檔案物件傳遞。

    • params Object<string, string | number | boolean> | URLSearchParams | string (選填)#

      要與 URL 一起傳送的查詢參數。

    • timeout number (選填)#

      請求逾時時間,以毫秒為單位。預設為 30000(30 秒)。傳遞 0 以停用逾時。

傳回


put

新增於:v1.16 apiRequestContext.put

傳送 HTTP(S) PUT 請求並傳回其回應。此方法將從上下文填充請求 Cookie,並從回應更新上下文 Cookie。此方法將自動追蹤重新導向。

用法

await apiRequestContext.put(url);
await apiRequestContext.put(url, options);

引數

  • url string#

    目標 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 以不追蹤重新導向。

    • maxRetries 數字 (選用)新增於: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 類型及其內容的類檔案物件傳遞。

    • params Object<string, string | number | boolean> | URLSearchParams | string (選填)#

      要與 URL 一起傳送的查詢參數。

    • timeout number (選填)#

      請求逾時時間,以毫秒為單位。預設為 30000(30 秒)。傳遞 0 以停用逾時。

傳回


storageState

新增於:v1.16 apiRequestContext.storageState

傳回此請求上下文的儲存狀態,如果已傳遞至建構函式,則包含目前的 Cookie 和本機儲存空間快照。

用法

await apiRequestContext.storageState();
await apiRequestContext.storageState(options);

引數

  • options 物件 (選用)
    • path string (選填)#

      要將儲存狀態儲存到的檔案路徑。如果 path 是相對路徑,則會相對於目前的工作目錄解析。如果未提供路徑,儲存狀態仍會傳回,但不會儲存到磁碟。

傳回