レスポンスの変更
不変のレスポンスプロパティを取得して変更するには、最初にコピーを作成します。
export default { async fetch(request) { /** * @param {string} headerNameSrc 新しい値を取得するヘッダー * @param {string} headerNameDst srcの値に基づいて設定するヘッダー */ const headerNameSrc = "foo"; //"Orig-Header" const headerNameDst = "Last-Modified";
/** * レスポンスプロパティは不変です。変更するには、新しい * Responseを構築し、ResponseInitオブジェクトに修正されたstatusまたはstatusTextを渡します。 * レスポンスヘッダーは、headersの`set`メソッドを通じて変更できます。 */ const originalResponse = await fetch(request);
// ステータスとステータステキストを変更しますが、ボディとヘッダーは保持します let response = new Response(originalResponse.body, { status: 500, statusText: "some message", headers: originalResponse.headers, });
// fooプロパティを追加してレスポンスボディを変更します const originalBody = await originalResponse.json(); const body = JSON.stringify({ foo: "bar", ...originalBody }); response = new Response(body, response);
// setメソッドを使用してヘッダーを追加します response.headers.set("foo", "bar");
// 送信先ヘッダーをソースヘッダーの値に設定します const src = response.headers.get(headerNameSrc);
if (src != null) { response.headers.set(headerNameDst, src); console.log( `レスポンスヘッダー "${headerNameDst}" が "${response.headers.get( headerNameDst, )}" に設定されました`, ); } return response; },};export default { async fetch(request): Promise<Response> { /** * @param {string} headerNameSrc 新しい値を取得するヘッダー * @param {string} headerNameDst srcの値に基づいて設定するヘッダー */ const headerNameSrc = "foo"; //"Orig-Header" const headerNameDst = "Last-Modified";
/** * レスポンスプロパティは不変です。変更するには、新しい * Responseを構築し、ResponseInitオブジェクトに修正されたstatusまたはstatusTextを渡します。 * レスポンスヘッダーは、headersの`set`メソッドを通じて変更できます。 */ const originalResponse = await fetch(request);
// ステータスとステータステキストを変更しますが、ボディとヘッダーは保持します let response = new Response(originalResponse.body, { status: 500, statusText: "some message", headers: originalResponse.headers, });
// fooプロパティを追加してレスポンスボディを変更します const originalBody = await originalResponse.json(); const body = JSON.stringify({ foo: "bar", ...originalBody }); response = new Response(body, response);
// setメソッドを使用してヘッダーを追加します response.headers.set("foo", "bar");
// 送信先ヘッダーをソースヘッダーの値に設定します const src = response.headers.get(headerNameSrc);
if (src != null) { response.headers.set(headerNameDst, src); console.log( `レスポンスヘッダー "${headerNameDst}" が "${response.headers.get( headerNameDst, )}" に設定されました`, ); } return response; },} satisfies ExportedHandler;from js import Response, fetch, JSON
async def on_fetch(request): header_name_src = "foo" # 新しい値を取得するヘッダー header_name_dst = "Last-Modified" # srcの値に基づいて設定するヘッダー
# レスポンスプロパティは不変です。変更するには、新しいレスポンスを構築します original_response = await fetch(request)
# ステータスとステータステキストを変更しますが、ボディとヘッダーは保持します response = Response.new(original_response.body, status=500, statusText="some message", headers=original_response.headers)
# fooプロパティを追加してレスポンスボディを変更します original_body = await original_response.json() original_body.foo = "bar" response = Response.new(JSON.stringify(original_body), response)
# 新しいヘッダーを追加します response.headers["foo"] = "bar"
# 送信先ヘッダーをソースヘッダーの値に設定します src = response.headers[header_name_src]
if src is not None: response.headers[header_name_dst] = src print(f'レスポンスヘッダー {header_name_dst} が {response.headers[header_name_dst]} に設定されました')
return response