---
title: Response
slug: Web/API/Response
tags:
- API
- Experimental
- Fetch
- Fetch API
- Interface
- Reference
- Response
- 参考
translation_of: Web/API/Response
---
{{APIRef("Fetch API")}}
Fetch API 的 Response
接口呈现了对一次请求的响应数据。
你可以使用 {{domxref("Response.Response()")}} 构造函数来创建一个 Response
对象,但通常更可能遇到的情况是,其他的API操作返回了一个 Response 对象。例如一个service worker 的 {{domxref("Fetchevent.respondWith")}},或者一个简单的 {{domxref("GlobalFetch.fetch()")}}。
构造函数
- {{domxref("Response.Response","Response()")}}
- 创建一个新的
Response
对象。
属性
- {{domxref("Response.headers")}} {{readonlyinline}}
- 包含此 Response 所关联的 {{domxref("Headers")}} 对象。
- {{domxref("Response.ok")}} {{readonlyinline}}
- 包含了一个布尔值,标示该 Response 成功(HTTP 状态码的范围在 200-299)。
- {{domxref("Response.redirected")}} {{ReadOnlyInline}}
- 表示该 Response 是否来自一个重定向,如果是的话,它的 URL 列表将会有多个条目。
- {{domxref("Response.status")}} {{readonlyinline}}
- 包含 Response 的状态码 (例如
200
表示成功)。
- {{domxref("Response.statusText")}} {{readonlyinline}}
- 包含了与该 Response 状态码一致的状态信息(例如,OK对应
200
)。
- {{domxref("Response.type")}} {{readonlyinline}}
- 包含 Response 的类型(例如,
basic
、cors
)。
- {{domxref("Response.url")}} {{readonlyinline}}
- 包含 Response 的URL。
- {{domxref("Response.useFinalURL")}}
- 包含了一个布尔值,来标示这是否是该 Response 的最终 URL。
Response
实现了 {{domxref("Body")}} 接口,所以以下属性亦可用:
- {{domxref("Body.body")}} {{readonlyInline}}
- 一个简单的 getter,用于暴露一个 {{domxref("ReadableStream")}} 类型的 body 内容。
- {{domxref("Body.bodyUsed")}} {{readonlyInline}}
- 包含了一个{{domxref("Boolean", "布尔值")}}来标示该 Response 是否读取过 {{domxref("Body")}}。
方法
- {{domxref("Response.clone()")}}
- 创建一个
Response
对象的克隆。
- {{domxref("Response.error()")}}
- 返回一个绑定了网络错误的新的
Response
对象。
- {{domxref("Response.redirect()")}}
- 用另一个 URL 创建一个新的
Response
。
Response
实现了 {{domxref("Body")}} 接口,所以以下方法同样可用:
- {{domxref("Body.arrayBuffer()")}}
- 读取 {{domxref("Response")}} 对象并且将它设置为已读(因为 Responses 对象被设置为了 stream 的方式,所以它们只能被读取一次),并返回一个被解析为 {{domxref("ArrayBuffer")}} 格式的 Promise 对象。
- {{domxref("Body.blob()")}}
- 读取 {{domxref("Response")}} 对象并且将它设置为已读(因为 Responses 对象被设置为了 stream 的方式,所以它们只能被读取一次),并返回一个被解析为 {{domxref("Blob")}} 格式的 Promise 对象。
- {{domxref("Body.formData()")}}
- 读取{{domxref("Response")}} 对象并且将它设置为已读(因为 Responses 对象被设置为了 stream 的方式,所以它们只能被读取一次),并返回一个被解析为 {{domxref("FormData")}} 格式的 Promise 对象。
- {{domxref("Body.json()")}}
- 读取 {{domxref("Response")}} 对象并且将它设置为已读(因为 Responses 对象被设置为了 stream 的方式,所以它们只能被读取一次),并返回一个被解析为 {{domxref("JSON")}} 格式的 Promise 对象。
- {{domxref("Body.text()")}}
- 读取 {{domxref("Response")}} 对象并且将它设置为已读(因为 Responses 对象被设置为了 stream 的方式,所以它们只能被读取一次),并返回一个被解析为 {{domxref("USVString")}} 格式的 Promise 对象。
示例
在我们的基础实例 (点击运行) 中 , 我们使用了一个简单的函数调用 , 调用了 fetch()
函数来获取一张图片并将其显示在 HTML 的 IMG 标签中 , fetch()
函数返回了一个 Promise,它使用与资源获取操作相关联的 Response 对象进行解析. 你会注意到,由于我们正在请求一张图片,我们需要运行{{domxref("Body.blob")}}({{domxref("Response")}} 实现了),以为响应提供正确的 MIME 类型。
const image = document.querySelector('.my-image');
fetch('flowers.jpg').then(function(response) {
return response.blob();
}).then(function(blob) {
const objectURL = URL.createObjectURL(blob);
image.src = objectURL;
});
你也可以使用 {{domxref("Response.Response()")}} 这样的构造方法,来创建自定义的 Response
对象:
const response = new Response();
规范
Specification |
Status |
Comment |
{{SpecName('Fetch','#response-class','Response')}} |
{{Spec2('Fetch')}} |
Initial definition |
浏览器兼容性
{{Compat("api.Response")}}
相关链接