请求
Request
是 Fetch API 的一个接口,表示资源请求。
可以使用 Request()
构造函数创建一个新的 Request
对象,但你更有可能遇到将 Request
对象作为另一个 API 操作的结果返回的情况,例如服务工作线程 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.headers
只读-
包含请求的关联
Headers
对象。 Request.integrity
只读-
包含请求的 子资源完整性 值(例如,
sha256-BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=
)。 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 对象添加到有效负载中,需要将该对象字符串化。
然后,可以通过将 Request
对象作为参数传递给 fetch()
调用来获取此 API 请求,例如,并获取响应。
fetch(request)
.then((response) => {
if (response.status === 200) {
return response.json();
} else {
throw new Error("Something went wrong on API server!");
}
})
.then((response) => {
console.debug(response);
// …
})
.catch((error) => {
console.error(error);
});
规范
规范 |
---|
Fetch 标准 # request-class |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。