Edge Functionsで複数のエンドポイントを提供する
IMPORTANT
AEM Edge Functionsは現在ベータ版です。 機能やドキュメントは変更される可能性があります。 フィードバックについては、aemcs-edgecompute-feedback@adobe.comまでお問い合わせください。
1つのAEM Edge関数で、多くのHTTP エンドポイントを公開できます。 Build an API endpointの例では、1つのJavaScript関数に2つのエンドポイント (/statusおよび/my-api)が既に表示されています。 は、エンドポイントごとに個別の関数をデプロイするのではなく同じ関数にエンドポイント一致ロジックを追加するだけです。
キーポイント
レイヤー
拡大・縮小
edgeFunctions.yaml名前を持つ1つの関数宣言(例:
my-edge-function)cdn.yamlエンドポイント ごとに1つのオリジン セレクタールールがあり、すべてのルールが同じ(例:
edgefunction-my-edge-function)オリジンを共有していますが、各ルールには独自のパス一致ルールがありますindex.jsエンドポイント ごとに1つの
if ステートメントと、ステートメント本文には独自のハンドラーロジックがあります別のエンドポイントの追加方法
/api/itemsなどの新しいエンドポイントを公開するには:
src/index.jsにエンドポイント一致ロジックを追加します。- AEM Edge関数をビルドしてデプロイします。
- エンドポイントの
config/cdn.yamlにオリジン セレクタールールを追加します。 - CDN設定のデプロイ
ハンドラーロジックの整理
エンドポイントの一致にindex.jsを集中させておきます。 APIの成長に合わせて、ハンドラーロジックを個別のファイルに移動します。
src/
├── index.js # fetch event handler and endpoint matching
├── my-api.js # handler for /my-api
├── items.js # handler for /api/items
└── lib/
└── response.js # shared 404 and 500 helpers
メソッドまたはパスのプレフィックスに一致
エンドポイントマッチングはプレーンJavaScriptです。 あなたは正確なパスの平等に限定されません。
HTTP メソッド:同じパスのGETとPOSTを個別のif ステートメントで処理します。
if (url.pathname === "/api/items" && req.method === "GET") {
return await listItems(req);
}
if (url.pathname === "/api/items" && req.method === "POST") {
return await createItem(req);
}
パス プレフィックス:共有プレフィックスの下に関連エンドポイントをグループ化し、ルーターモジュール内のハンドラーにディスパッチします。
// src/index.js
if (url.pathname.startsWith("/api/")) {
return await apiRouter(req, url);
}
// src/api-router.js
async function apiRouter(req, url) {
// match the segment after the shared /api/ prefix
switch (url.pathname) {
case "/api/items":
return await itemsHandler(req);
case "/api/orders":
return await ordersHandler(req);
default:
return new Response("Not found", { status: 404 });
}
}
export { apiRouter };
プレフィックスルーターを浅く保つ。つまり、ハンドラーに直接ディスパッチするプレフィックスレベルを1つ保持します。 プレフィックスが大きくなった場合は、1つのプレフィックスの下にルーターをネストするのではなく、独自のオリジン セレクタ ルール(/api/catalog/や/api/checkout/など)を持つ個別のプレフィックスに分割します。
その他のコード例
AEM Edge Functions ボイラープレート には、1つの関数に複数のエンドポイントが含まれています。
例
ファイル
What it shows
その他のリソース
recommendation-more-help
experience-manager-learn-help-cloud-service