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 |
浏览器兼容性
加载中…