Bereitstellen mehrerer Endpunkte mit Edge-Funktionen
Eine AEM Edge-Funktion kann viele HTTP-Endpunkte bereitstellen. Die Beispiele in Erstellen eines APIEndpunkts) zeigen bereits zwei Endpunkte (/status und /my-api) für eine einzelne JavaScript-Funktion. Sie nicht für jeden Endpunkt eine separate Funktion bereitstellen, sondern derselben Funktion einfach eine übereinstimmende Logik für den Endpunkt hinzufügen.
Kernpunkt
edgeFunctions.yamlmy-edge-functioncdn.yamledgefunction-my-edge-function), aber jede Regel verfügt über eine eigene Regel zum Abgleichen des Pfadsindex.jsif Anweisung pro Endpunkt und Anweisungstext verfügt über eine eigene Handler-LogikHinzufügen eines weiteren Endpunkts
So stellen Sie einen neuen Endpunkt wie /api/items bereit:
- Hinzufügen einer Endpunkt-Matching-Logik in
src/index.js. - Erstellen und Bereitstellen der AEM Edge-Funktion.
- Fügen Sie eine Regel zur Ursprungsauswahl in
config/cdn.yamlfür den Endpunkt hinzu. - Bereitstellen der CDN-Konfiguration
Organisieren der Handler-Logik
Konzentrieren index.js sich weiterhin auf den Endpunktabgleich. Verschieben Sie die Handler-Logik bei wachsender API in separate Dateien.
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
Übereinstimmung bei Methode oder Pfadpräfix
Endpunktvergleich ist JavaScript. Sie sind nicht auf exakte Pfadgleichheit beschränkt.
HTTP-Methode: Verarbeiten Sie GET und POST auf demselben Pfad mit separaten 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);
}
Pfadpräfix: Gruppieren Sie verwandte Endpunkte unter einem freigegebenen Präfix und senden Sie sie dann an einen Handler innerhalb eines Routermoduls.
// 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 };
Halten Sie die Präfix-Router niedrig, d. h. eine Präfixebene, die direkt an einen Handler gesendet wird. Wenn ein Präfix sehr groß wird, teilen Sie es in separate Präfixe mit eigenen Ursprungsauswahlregeln auf (z. B. /api/catalog/ und /api/checkout/), anstatt Router unter einem Präfix zu verschachteln.
Weitere Code-Beispiele
Das AEM Edge Functions-Textbaustein liefert mehrere Endpunkte in einer Funktion: