Servir varios extremos con funciones de Edge
Una función Edge de AEM puede exponer muchos extremos HTTP. Los ejemplos de Generar un extremo de API ya muestran dos extremos (/status y /my-api) en una sola función de JavaScript. Usted no implementa una función independiente para cada extremo, sino que simplemente agrega lógica de coincidencia de extremos a la misma función.
Punto clave
edgeFunctions.yamlmy-edge-functioncdn.yamledgefunction-my-edge-function), pero cada regla tiene su propia regla de coincidencia de rutaindex.jsif y el cuerpo de la instrucción tiene su propia lógica de controladorCómo añadir otro punto final
Para exponer un nuevo extremo como /api/items:
- Agregar lógica de coincidencia de extremo en
src/index.js. - Cree e implemente la función Edge de AEM.
- Agregue una regla de selector de origen en
config/cdn.yamlpara el extremo. - Implementar la configuración de CDN
Cómo organizar la lógica del controlador
Mantenga a index.js centrado en la coincidencia de extremos. Mueva la lógica del controlador a archivos independientes a medida que la API crezca.
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
Coincidencia en el método o prefijo de ruta
La coincidencia de puntos finales es JavaScript sin formato. No está limitado a la igualdad de ruta exacta.
Método HTTP: El identificador GET y POST están en la misma ruta con instrucciones if independientes.
if (url.pathname === "/api/items" && req.method === "GET") {
return await listItems(req);
}
if (url.pathname === "/api/items" && req.method === "POST") {
return await createItem(req);
}
Prefijo de ruta de acceso: Extremos relacionados con el grupo bajo un prefijo compartido y, a continuación, enviar a un controlador dentro de un módulo de enrutador.
// 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 };
Mantener los enrutadores de prefijo superficiales, es decir, un nivel de prefijo que se envía directamente a un controlador. Si un prefijo aumenta de tamaño, divídalo en prefijos separados con sus propias reglas de selector de origen (por ejemplo, /api/catalog/ y /api/checkout/) en lugar de anidar enrutadores bajo un prefijo.
Más ejemplos de código
La plantilla de funciones Edge de AEM envía varios extremos en una función: