Serving
Routup provides multiple ways to serve your application, all built on srvx for cross-runtime compatibility.
serve()
The primary way to start a server. Import from a runtime-specific entry point:
typescript
import { Router, defineCoreHandler, serve } from 'routup';
const router = new Router();
router.get('/', defineCoreHandler(() => 'Hello, World!'));
serve(router, { port: 3000 });The serve() function accepts the same options as srvx (port, hostname, etc.).
router.fetch()
Call router.fetch() directly with a Request to get a Response. Useful for testing or serverless environments:
typescript
const router = new Router();
router.get('/', defineCoreHandler(() => 'Hello'));
const response = await router.fetch(
new Request('http://localhost/')
);
console.log(await response.text()); // "Hello"toNodeHandler()
For Node.js interop, convert a router to a standard (req, res) handler. Available from the routup/node entry point:
typescript
import { createServer } from 'node:http';
import { Router, defineCoreHandler, toNodeHandler } from 'routup/node';
const router = new Router();
router.get('/', defineCoreHandler(() => 'Hello'));
const server = createServer(toNodeHandler(router));
server.listen(3000);This is useful for integrating routup into existing Node.js applications, or using it with frameworks like Express as a sub-app.
See Runtime Environments for runtime-specific examples.