Route
Routes map URL patterns to Cloudflare Workers, controlling which requests are handled by your Workers.
Worker Routes
Section titled “Worker Routes”The most convenient way to create routes is by defining them directly on your Worker.
import { Worker, Zone } from "alchemy/cloudflare";
// Create zone first so it exists for inferenceconst zone = await Zone("example-zone", { name: "example.com",});
const worker = await Worker("api", { name: "api-worker", entrypoint: "./src/api.ts", routes: [ { pattern: "api.example.com/*", // Zone ID inferred from example.com }, { pattern: "admin.example.com/*", // Also inferred from example.com }, ],});
// Routes are accessible on the workerconsole.log(worker.routes); // Array of created Route resources
Explicit Zone ID
Section titled “Explicit Zone ID”For more control, you can explicitly specify zone IDs:
import { Worker, Zone } from "alchemy/cloudflare";
const zone = await Zone("example-zone", { name: "example.com",});
const worker = await Worker("api", { name: "api-worker", entrypoint: "./src/api.ts", routes: [ { pattern: "api.example.com/*", zoneId: zone.id, // Explicit zone ID }, ],});
Route
Resource
Section titled “Route Resource”You can create and manage Routes independently with the Route
resource:
import { Route, Zone, Worker } from "alchemy/cloudflare";
const zone = await Zone("example-zone", { name: "example.com",});
const worker = await Worker("api", { name: "api-worker", entrypoint: "./src/api.ts",});
const route = await Route("api-route", { pattern: "api.example.com/*", script: worker, // Can use Worker resource directly zoneId: zone.id,});
Standalone routes also support automatic zone ID inference:
const route = await Route("auto-route", { pattern: "api.example.com/*", // Zone ID inferred script: "my-worker",});