コンテンツにスキップ

リクエストプロパティの修正

受信リクエストに基づいて編集されたプロパティを持つ修正リクエストを作成します。

export default {
async fetch(request) {
/**
* 例 someHost は生の JSON を返すように設定されています
* @param {string} someUrl リクエストを送信する URL、ホスト名も設定しているため、パスのみが適用されます
* @param {string} someHost リクエストが解決されるホスト
*/
const someHost = "example.com";
const someUrl = "https://foo.example.com/api.js";
/**
* 最良のプラクティスは、リクエストオブジェクトに新しい RequestInit プロパティを
* メソッドまたはコンストラクタを使用してのみ割り当てることです
*/
const newRequestInit = {
// メソッドを変更
method: "POST",
// ボディを変更
body: JSON.stringify({ bar: "foo" }),
// リダイレクトモードを変更
redirect: "follow",
// ヘッダーを変更、注意:このメソッドは既存のヘッダーを消去します
headers: {
"Content-Type": "application/json",
},
// アウトバウンドレスポンスの Cloudflare 機能を変更
cf: { apps: false },
};
// ホストのみを変更
const url = new URL(someUrl);
url.hostname = someHost;
// 最良のプラクティスは、常に元のリクエストを使用して新しいリクエストを構築し
// すべての属性をクローンすることです。URLを適用するにはコンストラクタも必要です
// 一度リクエストが構築されると、その URL は不変です。
const newRequest = new Request(
url.toString(),
new Request(request, newRequestInit),
);
// メソッドを使用してヘッダーを設定
newRequest.headers.set("X-Example", "bar");
newRequest.headers.set("Content-Type", "application/json");
try {
return await fetch(newRequest);
} catch (e) {
return new Response(JSON.stringify({ error: e.message }), {
status: 500,
});
}
},
};