跳转到内容
搜索文档

Response

最后更新 查看 MarkdownAgent 设置

Response 接口表示 HTTP 响应,是 Fetch API 的一部分。


构造函数

let response = new Response(body, init);

参数

  • body optional

    • 定义响应正文文本的对象。可以为 null 或以下任一类型:

      • BufferSource
      • FormData
      • ReadableStream
      • URLSearchParams
      • USVString
  • init optional

    • 包含要应用于响应的自定义设置的 options 对象。

options 对象的有效选项包括:

  • cf any | null
    • 包含 Cloudflare 特定信息的对象。此对象不属于 Fetch API 标准,仅在 Cloudflare Workers 中可用。此字段仅供 Response 的使用者参考,不会影响 Workers 的行为。
  • encodeBody string
    • 传输时,Workers 必须根据 content-encoding 标头压缩数据;若要提供已压缩的数据,必须将此属性设置为 "manual",否则默认为 "automatic"
  • headers Headers | ByteString
    • 要添加到响应中的任何标头,包含在 Headers 对象或 ByteString 键值对的对象字面量中。
  • status int
    • 响应的状态码,例如 200
  • statusText string
    • 与状态码关联的状态消息,例如 OK
  • webSocket WebSocket | null
    • 在成功的 WebSocket 握手响应中存在。例如,如果客户端向源站发送 WebSocket 升级请求,Worker 拦截该请求并转发到源站,源站回复成功的 WebSocket 升级响应,Worker 会看到 response.webSocket。这会建立通过 Worker 代理的 WebSocket 连接。请注意,您无法拦截通过 WebSocket 连接传输的数据。

属性

  • response.body Readable Stream
    • 用于获取正文内容的 getter。
  • response.bodyUsed boolean
    • 布尔值,指示响应中是否已使用正文。
  • response.headers Headers
    • 响应的标头。
  • response.ok boolean
    • 布尔值,指示响应是否成功(状态码在 200-299 范围内)。
  • response.redirected boolean
    • 布尔值,指示响应是否为重定向的结果。如果是,其 URL 列表将包含多个条目。
  • response.status int
    • 响应的状态码(例如,200 表示成功)。
  • response.statusText string
    • 与状态码对应的状态消息(例如,200 对应 OK)。
  • response.url string
    • 响应的 URL。该值为经过任何重定向后获得的最终 URL。
  • response.webSocket WebSocket?
    • 在成功的 WebSocket 握手响应中存在。例如,如果客户端向源站发送 WebSocket 升级请求,Worker 拦截该请求并转发到源站,源站回复成功的 WebSocket 升级响应,Worker 会看到 response.webSocket。这会建立通过 Worker 代理的 WebSocket 连接。请注意,您无法拦截通过 WebSocket 连接传输的数据。

方法

实例方法

  • clone() : Response

  • json() : Response

    • 创建带有 JSON 序列化负载的新响应。
  • redirect() : Response

    • 创建带有不同 URL 的新响应。

其他实例方法

Response 实现了 Fetch APIBody mixin,因此 Response 实例还额外提供以下方法:

  • arrayBuffer() : Promise<ArrayBuffer>

  • formData() : Promise<FormData>

    • 获取 Response 流,读取至完成,并返回一个 Promise,该 Promise 解析为 FormData 对象。
  • json() : Promise<JSON>

    • 获取 Response 流,读取至完成,并返回一个 Promise,该 Promise 解析为将正文文本解析为 JSON 的结果。
  • text() : Promise<USVString>

    • 获取 Response 流,读取至完成,并返回一个 Promise,该 Promise 解析为 USVString(文本)。

设置 Content-Length 标头

运行时将根据 Response 的数据源自动设置 Content-Length 标头。用户在 Headers 中手动设置的任何值都将被忽略。若要指定具有特定值的 Content-Length 标头,Responsebody 必须是 FixedLengthStream 或固定长度的值(如字符串或 TypedArray)。

FixedLengthStream 是一种恒等 TransformStream,仅允许写入固定数量的字节。

  const { writable, readable } = new FixedLengthStream(11);

  const enc = new TextEncoder();
  const writer = writable.getWriter();
  writer.write(enc.encode("hello world"));
  writer.end();

  return new Response(readable);

将任何其他类型的 ReadableStream 用作响应正文时,将使用分块编码(chunked encoding)。


Differences

Workers 对 Response 接口的实现包含对 Web 标准 Response API 的多项扩展。这些差异是有意为之,提供了 Workers 运行时特有的附加功能。

The cf property

Workers 向 Response 对象添加了可选的 cf 属性。此属性可在 ResponseInit 选项中设置,供 Response 的使用者参考。它不会影响 Workers 的行为。

The webSocket property

Workers 向 Response 对象添加了 webSocket 属性以支持 WebSocket 连接。此属性在成功的 WebSocket 握手响应中存在。有关更多信息,请参阅 WebSockets

The encodeBody option

Workers 在 ResponseInit 中添加了 encodeBody 选项,用于控制响应正文的压缩方式。提供预压缩数据时,请将此选项设置为 "manual",以防止自动压缩。

The headers property

headers 属性返回 Workers 特有的 Headers 对象,其中包含 getAll() 等附加方法,用于处理 Set-Cookie 标头。有关 Workers Headers 实现与 Web 标准差异的详细信息,请参阅 Headers 文档


相关资源

这篇文档对您有帮助吗?