2.1 Response 对象的同步属性
fetch()
请求成功以后,得到的是一个 Response 对象。它对应服务器的 HTTP 回应。
const response = await fetch(url);
前面说过,Response 包含的数据通过 Stream 接口异步读取,但是它还包含一些同步属性,对应 HTTP 回应的标头信息(Headers),可以立即读取。
async function fetchText() {
let response = await fetch('/readme.txt');
console.log(response.status);
console.log(response.statusText);
}
上面示例中,response.status
和response.statusText
就是 Response 的同步属性,可以立即读取。
标头信息属性有下面这些。
Response.ok
Response.ok
属性返回一个布尔值,表示请求是否成功,true
对应 HTTP 请求的状态码 200 到 299,false
对应其他的状态码。
Response.status
Response.status
属性返回一个数字,表示 HTTP 回应的状态码(例如200,表示成功请求)。
Response.statusText
Response.statusText
属性返回一个字符串,表示 HTTP 回应的状态信息(例如请求成功以后,服务器返回”OK”)。
Response.url
Response.url
属性返回请求的 URL。如果 URL 存在跳转,该属性返回的是最终 URL。
Response.type
Response.type
属性返回请求的类型。可能的值如下:
basic
:普通请求,即同源请求。cors
:跨域请求。error
:网络错误,主要用于 Service Worker。opaque
:如果fetch()
请求的type
属性设为no-cors
,就会返回这个值,详见请求部分。表示发出的是简单的跨域请求,类似<form>
表单的那种跨域请求。opaqueredirect
:如果fetch()
请求的redirect
属性设为manual
,就会返回这个值,详见请求部分。
Response.redirected
Response.redirected
属性返回一个布尔值,表示请求是否发生过跳转。