Response インターフェイスは HTTP レスポンスを表し、Fetch API の一部です。
let response = new Response(body, init);-
bodyoptional-
レスポンスの本文を定義するオブジェクトです。
null、または次のいずれかの型を指定できます。- BufferSource
- FormData
- ReadableStream
- URLSearchParams
- USVString
-
-
initoptional- レスポンスに適用するカスタム設定を含む
optionsオブジェクトです。
- レスポンスに適用するカスタム設定を含む
options オブジェクトで使える設定は次のとおりです。
cfany | null- Cloudflare 固有の情報を含むオブジェクトです。このオブジェクトは Fetch API 標準の一部ではなく、Cloudflare Workers でのみ使えます。このフィールドは Response の利用側が情報として参照するだけで、Workers の動作には影響しません。
encodeBodystring- Workers は送信時に
content-encodingヘッダーに従ってデータを圧縮します。すでに圧縮済みのデータを返すには、このプロパティを"manual"にします。デフォルトは"automatic"です。
- Workers は送信時に
headersHeaders | ByteString- レスポンスに追加するヘッダーです。
Headersオブジェクト、またはByteString↗ のキーと値のオブジェクトリテラルで指定します。
- レスポンスに追加するヘッダーです。
statusint- レスポンスのステータスコードです。例:
200。
- レスポンスのステータスコードです。例:
statusTextstring- ステータスコードに対応するステータスメッセージです。例:
OK。
- ステータスコードに対応するステータスメッセージです。例:
webSocketWebSocket | null- 成功した WebSocket ハンドシェイクのレスポンスに含まれます。たとえば、クライアントがオリジンへ WebSocket のアップグレードリクエストを送り、Worker がそのリクエストを傍受してオリジンへ転送し、オリジンが成功した WebSocket アップグレードレスポンスを返すと、Worker は
response.webSocketを見ます。これで Worker を経由するプロキシされた WebSocket 接続が確立します。WebSocket 接続上を流れるデータは傍受できません。
- 成功した WebSocket ハンドシェイクのレスポンスに含まれます。たとえば、クライアントがオリジンへ WebSocket のアップグレードリクエストを送り、Worker がそのリクエストを傍受してオリジンへ転送し、オリジンが成功した WebSocket アップグレードレスポンスを返すと、Worker は
response.bodyReadable Stream- 本文の内容を取得するゲッターです。
response.bodyUsedboolean- レスポンスで本文が使われたかどうかを示す真偽値です。
response.headersHeaders- レスポンスのヘッダーです。
response.okboolean- レスポンスが成功したか(ステータスが
200〜299)を示す真偽値です。
- レスポンスが成功したか(ステータスが
response.redirectedboolean- レスポンスがリダイレクトの結果かどうかを示す真偽値です。その場合、URL リストは 2 件以上になります。
response.statusint- レスポンスのステータスコードです(成功を示す
200など)。
- レスポンスのステータスコードです(成功を示す
response.statusTextstring- ステータスコードに対応するステータスメッセージです(
200に対するOKなど)。
- ステータスコードに対応するステータスメッセージです(
response.urlstring- レスポンスの URL です。値はリダイレクト後の最終 URL です。
response.webSocketWebSocket?- 成功した WebSocket ハンドシェイクのレスポンスに含まれます。たとえば、クライアントがオリジンへ WebSocket のアップグレードリクエストを送り、Worker がそのリクエストを傍受してオリジンへ転送し、オリジンが成功した WebSocket アップグレードレスポンスを返すと、Worker は
response.webSocketを見ます。これで Worker を経由するプロキシされた WebSocket 接続が確立します。WebSocket 接続上を流れるデータは傍受できません。
- 成功した WebSocket ハンドシェイクのレスポンスに含まれます。たとえば、クライアントがオリジンへ WebSocket のアップグレードリクエストを送り、Worker がそのリクエストを傍受してオリジンへ転送し、オリジンが成功した WebSocket アップグレードレスポンスを返すと、Worker は
-
clone(): ResponseResponseオブジェクトの複製を作ります。
-
json(): Response- JSON にシリアライズしたペイロードで新しいレスポンスを作ります。
-
redirect(): Response- 別の URL で新しいレスポンスを作ります。
Response は Fetch API ↗ の Body ↗ mixin を実装しているため、Response インスタンスでは次のメソッドも使えます。
-
arrayBuffer(): Promise<ArrayBuffer>Responseストリームを最後まで読み、ArrayBuffer↗ で解決する Promise を返します。
-
formData(): Promise<FormData>Responseストリームを最後まで読み、FormData↗ オブジェクトで解決する Promise を返します。
-
json(): Promise<JSON> -
text(): Promise<USVString>Responseストリームを最後まで読み、USVString↗(テキスト)で解決する Promise を返します。
Content-Length ヘッダーは、Response のデータソースに応じてランタイムが自動設定します。ユーザーコードが Headers に手動で設定した値は無視されます。特定の値の Content-Length ヘッダーを付けるには、Response の body を FixedLengthStream、または文字列や 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 ランタイム固有の機能を提供します。
Workers は Response オブジェクトに省略可能な cf プロパティを追加します。このプロパティは ResponseInit オプションで設定でき、Response の利用側が情報として参照します。Workers の動作には影響しません。
Workers は WebSocket 接続を扱うために、Response オブジェクトに webSocket プロパティを追加します。このプロパティは、成功した WebSocket ハンドシェイクのレスポンスに含まれます。詳しくは WebSockets を参照してください。
Workers は ResponseInit に、レスポンス本文の圧縮方法を制御する encodeBody オプションを追加します。事前圧縮済みのデータを返すときは "manual" に設定し、自動圧縮を防ぎます。
headers プロパティは、Set-Cookie ヘッダー向けの getAll() など追加メソッドを含む、Workers 固有の Headers オブジェクトを返します。Workers の Headers 実装と Web 標準の違いは Headers のドキュメント を参照してください。
- 例: レスポンスの変更
- 例: 条件付きレスポンス
- リファレンス:
Request - 最適な体験のため、Worker コードは ES modules 構文 で書いてください。