|
1 | | -import { ResponseBuilder, Router } from "@fermyon/spin-sdk"; |
| 1 | +// https://itty.dev/itty-router/routers/autorouter |
| 2 | +import { AutoRouter } from 'itty-router'; |
2 | 3 |
|
3 | | -let router = Router(); |
4 | | -// Route that will be called for the default route: |
5 | | -router.get("/", (_, req, res) => { handleDefaultRoute(req, res) }); |
6 | | -// Modify this route or add additional ones to implement the component's API: |
7 | | -router.get("/hello/:name", (metadata, req, res) => { handleHelloRoute(req, res, metadata.params.name) }); |
8 | | -// Default route that will be called for any routes not handled above: |
9 | | -router.all("*", (_, req, res) => { notFound(req, res) }); |
| 4 | +let router = AutoRouter(); |
10 | 5 |
|
11 | | -async function handleDefaultRoute(req: Request, res: ResponseBuilder) { |
12 | | - res.send("hello universe"); |
13 | | -} |
| 6 | +// Route ordering matters, the first route that matches will be used |
| 7 | +// Any route that does not return will be treated as a middleware |
| 8 | +// Any unmatched route will return a 404 |
| 9 | +router |
| 10 | + .get("/", () => new Response("hello universe")) |
| 11 | + .get('/hello/:name', ({ name }) => `Hello, ${name}!`) |
14 | 12 |
|
15 | | -async function handleHelloRoute(req: Request, res: ResponseBuilder, name: string) { |
16 | | - res.send(`hello ${name}`); |
17 | | -} |
18 | | - |
19 | | -async function notFound(req: Request, res: ResponseBuilder) { |
20 | | - res.status(404); |
21 | | - res.send("not found"); |
22 | | -} |
23 | | - |
24 | | -export async function handler(req: Request, res: ResponseBuilder) { |
25 | | - await router.handleRequest(req, res); |
26 | | -} |
| 13 | +//@ts-ignore |
| 14 | +addEventListener('fetch', async (event: FetchEvent) => { |
| 15 | + event.respondWith(router.fetch(event.request)); |
| 16 | +}); |
0 commit comments