您可以使用new Response()构造函数来创建一个Response对象,但通常更可能遇到的情况是,其他的API操作返回了一个Response对象。例如一个FetchEvent.respondWith,或者一个简单的fetch()。
详细定义请参见MDN官方文档Response。
构造函数
let response = new Response(body, init)
- 参数
- body
- 可选,定义响应正文的对象。可以是null或以下任何一种类型:
- BufferSource
- FormData(即将支持)
- ReadableStream
- URLSearchParams
- USVString
- 可选,定义响应正文的对象。可以是null或以下任何一种类型:
- init
- 可选,包含要应用于Response的自定义设置。
- status
int
- 响应的状态码,例如200。
- statusText
string
- 与状态代码关联的状态消息,例如OK。
- headers
Headers
|ByteString
- Headers对象或要添加到响应头的ByteString键/值对。
- status
- 可选,包含要应用于Response的自定义设置。
- body
属性
- body
ReadableStream
- 读取响应正文的只读流。
- bodyUsed
boolean
- 表示响应是否读取过正文。
- headers
Headers
- 响应的头信息。
- ok
boolean
- 表示响应是否成功(HTTP状态码的范围在200-299)。
- redirected
boolean
- 表示响应是否来自一个重定向,如果是的话,它的URL列表将会有多个条目。
- status
int
- 响应的状态码 (例如200表示成功)。
- statusText
string
- 与响应状态码一致的状态信息(例如,OK对应200)。
- url
string
- 响应的URL,该值是任何重定向后获得的最终URL。
- webSocket
- 暂不支持。
方法
实例方法
- clone()
Response
- 创建Response对象的副本。
- redirect()
Response
- 使用其他URL创建新的响应。
其他实例方法
Response实现Body的接口,所以以下方法同样可用:
- arrayBuffer()
Promise<ArrayBuffer>
- 读取Response对象并且将它设置为已读(因为Response对象被设置为了stream的方式,所以它们只能被读取一次),并返回一个被解析为ArrayBuffer格式的Promise对象。
- formData()
Promise<FormData>
- 读取Response对象并且将它设置为已读(因为Response对象被设置为了stream的方式,所以它们只能被读取一次),并返回一个被解析为FormData格式的Promise对象(即将支持)。
- json()
Promise<JSON>
- 读取Response对象并且将它设置为已读(因为Response对象被设置为了stream的方式,所以它们只能被读取一次),并返回一个被解析为 JSON 格式的Promise对象。
- text()
Promise<USVString>
- 读取Response对象并且将它设置为已读(因为Response对象被设置为了stream的方式,所以它们只能被读取一次),并返回一个被解析为 USVString 格式的Promise对象。
相关参考
示例代码:修改响应
示例代码:热链保护
示例代码:请求聚合
示例代码:URL重定向