Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

Response

最終更新 Markdown で表示Agent セットアップ

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
    • 本文の内容を取得するゲッターです。
  • response.bodyUsed boolean
    • レスポンスで本文が使われたかどうかを示す真偽値です。
  • response.headers Headers
    • レスポンスのヘッダーです。
  • response.ok boolean
    • レスポンスが成功したか(ステータスが 200299)を示す真偽値です。
  • response.redirected boolean
    • レスポンスがリダイレクトの結果かどうかを示す真偽値です。その場合、URL リストは 2 件以上になります。
  • 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

    • Response オブジェクトの複製を作ります。
  • json() : Response

    • JSON にシリアライズしたペイロードで新しいレスポンスを作ります。
  • redirect() : Response

    • 別の URL で新しいレスポンスを作ります。

追加のインスタンスメソッド

ResponseFetch APIBody mixin を実装しているため、Response インスタンスでは次のメソッドも使えます。

  • arrayBuffer() : Promise<ArrayBuffer>

  • formData() : Promise<FormData>

    • Response ストリームを最後まで読み、FormData オブジェクトで解決する Promise を返します。
  • json() : Promise<JSON>

    • Response ストリームを最後まで読み、本文テキストを JSON としてパースした結果で解決する Promise を返します。
  • text() : Promise<USVString>

    • Response ストリームを最後まで読み、USVString(テキスト)で解決する Promise を返します。

Content-Length ヘッダーを設定する

Content-Length ヘッダーは、Response のデータソースに応じてランタイムが自動設定します。ユーザーコードが Headers に手動で設定した値は無視されます。特定の値の Content-Length ヘッダーを付けるには、ResponsebodyFixedLengthStream、または文字列や TypedArray のような固定長の値にする必要があります。

FixedLengthStream は、書き込めるバイト数が固定の identity 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 を使うと、チャンク転送エンコーディングになります。


標準との違い

Workers の Response インターフェイス実装には、Web 標準の Response API に対するいくつかの拡張があります。これらは意図的な差で、Workers ランタイム固有の機能を提供します。

cf プロパティ

Workers は Response オブジェクトに省略可能な cf プロパティを追加します。このプロパティは ResponseInit オプションで設定でき、Response の利用側が情報として参照します。Workers の動作には影響しません。

webSocket プロパティ

Workers は WebSocket 接続を扱うために、Response オブジェクトに webSocket プロパティを追加します。このプロパティは、成功した WebSocket ハンドシェイクのレスポンスに含まれます。詳しくは WebSockets を参照してください。

encodeBody オプション

Workers は ResponseInit に、レスポンス本文の圧縮方法を制御する encodeBody オプションを追加します。事前圧縮済みのデータを返すときは "manual" に設定し、自動圧縮を防ぎます。

headers プロパティ

headers プロパティは、Set-Cookie ヘッダー向けの getAll() など追加メソッドを含む、Workers 固有の Headers オブジェクトを返します。Workers の Headers 実装と Web 標準の違いは Headers のドキュメント を参照してください。


関連リソース

役に立ちましたか?