public_docs

Simple Deno server example

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