顾名思义,Response 对象是获取资源响应的接口。这个接口暴露了响应的相关信息,也暴露了使
用响应体的不同方式。
创建Response 对象
可以通过构造函数初始化Response 对象且不需要参数。此时响应实例的属性均为默认值,因为它
并不代表实际的HTTP 响应:
let r = new Response();
console.log®;
// Response {
// body: (…)
// bodyUsed: false
// headers: Headers {}
// ok: true
// redirected: false
// status: 200
// statusText: “OK”
// type: “default”
// url: “”
// }
Response 构造函数接收一个可选的body 参数。这个body 可以是null,等同于fetch()参数
init 中的body。还可以接收一个可选的init 对象,这个对象可以包含下表所列的键和值。
键 值
headers 必须是Headers 对象实例或包含字符串键/值对的常规对象实例
默认为没有键/值对的Headers 对象
status 表示HTTP 响应状态码的整数
默认为200
statusText 表示HTTP 响应状态的字符串
默认为空字符串
可以像下面这样使用body 和init 来构建Response 对象:
let r = new Response(‘foobar’, {
status: 418,
statusText: ‘I’m a teapot’
});
console.log®;
// Response {
// body: (…)
// bodyUsed: false
// headers: Headers {}
// ok: false
// redirected: false
// status: 418
// statusText: “I’m a teapot”
// type: “default”
// url: “”
// }
大多数情况下,产生Response 对象的主要方式是调用fetch(),它返回一个最后会解决为
Response 对象的期约,这个Response 对象代表实际的HTTP 响应。下面的代码展示了这样得到的
Response 对象:
fetch(‘https://foo.com’)
.then((response) => {
console.log(response);
});
// Response {
// body: (…)
// bodyUsed: false
// headers: Headers {}
// ok: true
// redirected: false
// status: 200
// statusText: “OK”
// type: “basic”
// url: “https://foo.com/”
// }
Response 类还有两个用于生成Response 对象的静态方法:Response.redirect()和Response.
error()。前者接收一个URL 和一个重定向状态码(301、302、303、307 或308),返回重定向的Response
对象:
console.log(Response.redirect(‘https://foo.com’, 301));
// Response {
// body: (…)
// bodyUsed: false
// headers: Headers {}
// ok: false
// redirected: false
// status: 301
// statusText: “”
// type: “default”
// url: “”
// }
提供的状态码必须对应重定向,否则会抛出错误:
Response.redirect(‘https://foo.com’, 200);
// RangeError: Failed to execute ‘redirect’ on ‘Response’: Invalid status code
另一个静态方法Response.error()用于产生表示网络错误的Response 对象(网络错误会导致
fetch()期约被拒绝)。
console.log(Response.error());
// Response {
// body: (…)
// bodyUsed: false
// headers: Headers {}
// ok: false
// redirected: false
// status: 0
// statusText: “”
// type: “error”
// url: “”
// }
javascript基础从小白到高手系列一千四百一十九:Response 对象
最新推荐文章于 2024-09-08 09:57:51 发布