レスポンス
ResponseインターフェースはHTTPレスポンスを表し、Fetch APIの一部です。
let response = new Response(body, init);-
bodyオプション-
レスポンスのボディテキストを定義するオブジェクト。
nullまたは以下のいずれかのタイプであることができます:- BufferSource
- FormData
- ReadableStream
- URLSearchParams
- USVString
-
-
initオプション- レスポンスに適用するカスタム設定を含む
optionsオブジェクト。
- レスポンスに適用するカスタム設定を含む
optionsオブジェクトの有効なオプションには以下が含まれます:
cfany | null- Cloudflare特有の情報を含むオブジェクト。このオブジェクトはFetch API標準の一部ではなく、Cloudflare Workersでのみ利用可能です。このフィールドは、Responseの消費者によって情報提供の目的でのみ使用され、Workersの動作には影響しません。
encodeBodystring- Workersは、データを送信する際に
content-encodingヘッダーに従ってデータを圧縮する必要があります。すでに圧縮されたデータを提供するためには、このプロパティを"manual"に設定する必要があります。そうでなければ、デフォルトは"automatic"です。
- Workersは、データを送信する際に
headersHeaders | ByteStringHeadersオブジェクトまたは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リストには複数のエントリがあります。
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 ↗ミキシンを実装しているため、Responseインスタンスには以下のメソッドも利用可能です:
-
arrayBuffer(): Promise<ArrayBuffer>Responseストリームを取得し、完了まで読み取り、ArrayBuffer↗で解決されるプロミスを返します。
-
formData(): Promise<FormData>Responseストリームを取得し、完了まで読み取り、FormData↗オブジェクトで解決されるプロミスを返します。
-
json(): Promise<JSON> -
text(): Promise<USVString>Responseストリームを取得し、完了まで読み取り、USVString↗(テキスト)で解決されるプロミスを返します。
Content-Lengthヘッダーは、Responseのデータソースに基づいてランタイムによって自動的に設定されます。Headersでユーザーコードによって手動で設定された値は無視されます。特定の値を指定したContent-Lengthヘッダーを持たせるには、Responseのbodyは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を使用すると、チャンクエンコーディングが使用されます。
- 例:レスポンスの修正
- 例:条件付きレスポンス
- リファレンス:
Request - 最適化された体験のためにESモジュール構文でWorkerコードを記述してください。