コンテンツにスキップ

レスポンス

ResponseインターフェースはHTTPレスポンスを表し、Fetch APIの一部です。


コンストラクタ

let response = new Response(body, init);

パラメータ

  • body オプション

    • レスポンスのボディテキストを定義するオブジェクト。nullまたは以下のいずれかのタイプであることができます:

      • BufferSource
      • FormData
      • ReadableStream
      • URLSearchParams
      • USVString
  • init オプション

    • レスポンスに適用するカスタム設定を含む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
    • レスポンスが成功したかどうかを示すブール値(ステータスが200から299の範囲内)。
  • response.redirected boolean
    • レスポンスがリダイレクトの結果であるかどうかを示すブール値。そうであれば、そのURLリストには複数のエントリがあります。
  • response.status int
    • レスポンスのステータスコード(例:成功を示す200)。
  • response.statusText string
    • ステータスコードに対応するステータスメッセージ(例:200OK)。
  • 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ミキシンを実装しているため、Responseインスタンスには以下のメソッドも利用可能です:

  • arrayBuffer() : Promise<ArrayBuffer>

    • Responseストリームを取得し、完了まで読み取り、ArrayBufferで解決されるプロミスを返します。
  • formData() : Promise<FormData>

    • Responseストリームを取得し、完了まで読み取り、FormDataオブジェクトで解決されるプロミスを返します。
  • json() : Promise<JSON>

    • Responseストリームを取得し、完了まで読み取り、ボディテキストをJSONとして解析した結果で解決されるプロミスを返します。
  • text() : Promise<USVString>

    • Responseストリームを取得し、完了まで読み取り、USVString(テキスト)で解決されるプロミスを返します。

Content-Lengthヘッダーの設定

Content-Lengthヘッダーは、Responseのデータソースに基づいてランタイムによって自動的に設定されます。Headersでユーザーコードによって手動で設定された値は無視されます。特定の値を指定したContent-Lengthヘッダーを持たせるには、ResponsebodyFixedLengthStreamまたは固定長の値(文字列または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を使用すると、チャンクエンコーディングが使用されます。


関連リソース