A very minimalistic, simple server example in deno with no dependencies.
app.js
import { routes } from './router.js';
Deno.serve(async (req) => {
const res = { body: null, status: 200 };
await middleware(req, res);
return new Response(res.body ?? 'failed', { status: res.status ?? 500 });
});
async function middleware(req, res) {
try {
const key = `${req.method} ${new URL(req.url).pathname}`;
const route = routes[key];
if(route) {
await route(req, res);
} else {
res.status = 404;
res.body = 'Not Found';
}
} catch(err) {
console.error(err);
res.status = 500;
res.body = 'Internal Server Error';
}
}
router.js
export const routes = {
"GET /": handle_root,
"POST /echo": handle_echo,
};
async function handle_root(req, res) {
res.status = 200;
res.body = "ok";
}
async function handle_echo(req, res) {
res.status = 200;
res.body = await req.text(); // Echo back the received payload
}
© unpacked - licence