请求

基线 广泛可用

此功能已得到良好建立,并在许多设备和浏览器版本中都能正常工作。它自以下时间起在浏览器中可用: 2017 年 3 月.

RequestFetch API 的一个接口,表示资源请求。

可以使用 Request() 构造函数创建一个新的 Request 对象,但你更有可能遇到将 Request 对象作为另一个 API 操作的结果返回的情况,例如服务工作线程 FetchEvent.request

构造函数

Request()

创建一个新的 Request 对象。

实例属性

Request.body 只读

主体内容的 ReadableStream

Request.bodyUsed 只读

存储 truefalse 以指示主体是否已在请求中使用过。

Request.cache 只读

包含请求的缓存模式(例如,defaultreloadno-cache)。

Request.credentials 只读

包含请求的凭据(例如,omitsame-origininclude)。默认为 same-origin

Request.destination 只读

描述正在请求的内容类型的字符串。

Request.headers 只读

包含请求的关联 Headers 对象。

Request.integrity 只读

包含请求的 子资源完整性 值(例如,sha256-BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=)。

Request.method 只读

包含请求的方法(GETPOST 等)。

Request.mode 只读

包含请求的模式(例如,corsno-corssame-originnavigate)。

Request.redirect 只读

包含处理重定向的方式的模式。它可以是 followerrormanual 之一。

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() 构造函数创建一个新的请求(用于与脚本位于同一目录中的图像文件),然后返回请求的一些属性值。

js
const request = new Request("https://www.mozilla.org/favicon.ico");

const url = request.url;
const method = request.method;
const credentials = request.credentials;

然后,可以通过将 Request 对象作为参数传递给 fetch() 调用来获取此请求,例如。

js
fetch(request)
  .then((response) => response.blob())
  .then((blob) => {
    image.src = URL.createObjectURL(blob);
  });

在以下代码片段中,我们使用 Request() 构造函数创建一个新的请求,其中包含一些初始数据和主体内容,用于需要主体有效负载的 API 请求。

js
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;

注意:主体只能是 BlobArrayBufferTypedArrayDataViewFormDataURLSearchParamsReadableStreamString 对象,以及字符串文字,因此,要将 JSON 对象添加到有效负载中,需要将该对象字符串化。

然后,可以通过将 Request 对象作为参数传递给 fetch() 调用来获取此 API 请求,例如,并获取响应。

js
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 的浏览器中加载。

另请参阅