Request
Baseline 廣泛可用 *
注意:此功能在 Web Workers 中可用。
Fetch API 中的 Request 介面表示一個資源請求。
您可以使用 Request() 建構函式建立一個新的 Request 物件,但更有可能遇到的是 Request 物件作為其他 API 操作的結果返回,例如 Service Worker 的 FetchEvent.request。
建構函式
Request()-
建立一個新的
Request物件。
例項屬性
Request.body只讀-
包含請求正文內容的
ReadableStream。 Request.bodyUsed只讀-
儲存
true或false來指示請求正文是否已被使用。 Request.cache只讀-
包含請求的快取模式(例如,
default、reload、no-cache)。 Request.credentials只讀-
包含一個控制是否應將憑據包含在請求中的值(例如,
omit、same-origin、include)。預設為same-origin。 Request.destination只讀-
一個描述請求內容型別的字串。
Request.duplex只讀 實驗性-
請求的雙工模式,它決定了瀏覽器是否必須在處理響應之前傳送整個請求。
Request.headers只讀-
包含請求的關聯
Headers物件。 Request.integrity只讀-
包含請求的 子資源完整性 值(例如,
sha256-BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=)。 -
一個布林值,指示該請求是否為歷史導航。
Request.keepalive只讀-
包含請求的
keepalive設定(true或false),指示在啟動它的頁面解除安裝之前,瀏覽器是否會保持相關的請求處於活動狀態直到請求完成。 Request.method只讀-
包含請求的方法(
GET、POST等)。 Request.mode只讀-
包含請求的模式(例如,
cors、no-cors、same-origin、navigate)。 Request.redirect只讀-
包含處理重定向的模式。它可以是
follow、error或manual之一。 Request.referrer只讀-
包含請求的引用者(例如,
client)。 Request.referrerPolicy只讀-
包含請求的引用者策略(例如,
no-referrer)。 Request.signal只讀-
返回與請求關聯的
AbortSignal。 Request.url只讀-
包含請求的 URL。
例項方法
Request.arrayBuffer()-
返回一個 Promise,該 Promise 將解析為請求正文的
ArrayBuffer表示形式。 Request.blob()-
返回一個 Promise,該 Promise 將解析為請求正文的
Blob表示形式。 Request.bytes()-
返回一個 Promise,該 Promise 將解析為請求正文的
Uint8Array表示形式。 Request.clone()-
建立當前
Request物件的一個副本。 Request.formData()-
返回一個 Promise,該 Promise 將解析為請求正文的
FormData表示形式。 Request.json()-
返回一個 Promise,該 Promise 將解析為將請求正文解析為
JSON的結果。 Request.text()-
返回一個 Promise,該 Promise 將解析為請求正文的文字表示形式。
注意: 請求正文函式只能執行一次;後續呼叫將以 TypeError 拒絕,表明正文流已被使用。
示例
在下面的程式碼片段中,我們使用 Request() 建構函式建立一個新請求(用於與指令碼在同一目錄下的影像檔案),然後返回請求的一些屬性值。
const request = new Request("https://www.mozilla.org/favicon.ico");
const url = request.url;
const method = request.method;
const credentials = request.credentials;
然後,您可以透過將 Request 物件作為引數傳遞給 fetch() 呼叫來獲取此請求,例如:
fetch(request)
.then((response) => response.blob())
.then((blob) => {
image.src = URL.createObjectURL(blob);
});
在下面的程式碼片段中,我們使用 Request() 建構函式建立了一個帶有初始資料和請求正文內容的新請求,用於需要請求正文負載的 API 請求。
const request = new Request("https://example.com", {
method: "POST",
body: '{"foo": "bar"}',
});
const url = request.url;
const method = request.method;
const credentials = request.credentials;
const bodyUsed = request.bodyUsed;
注意: 請求正文只能是 Blob、ArrayBuffer、TypedArray、DataView、FormData、URLSearchParams、ReadableStream 或 String 物件,以及字串字面量;因此,要將 JSON 物件新增到負載中,您需要對該物件進行字串化。
然後,您可以將此 API 請求作為引數傳遞給 fetch() 呼叫來獲取此 API 請求,例如,並獲取響應:
fetch(request)
.then((response) => {
if (response.status !== 200) {
throw new Error("Something went wrong on API server!");
}
return response.json();
})
.then((response) => {
console.debug(response);
// …
})
.catch((error) => {
console.error(error);
});
規範
| 規範 |
|---|
| Fetch # request-class |
瀏覽器相容性
載入中…