import { listenAndServe, ServerRequest, } from "https://deno.land/std/http/server.ts"; const options: Deno.ListenOptions = { port: 8000 }; class Router { _get: { [k: string]: (req: ServerRequest) => void } = {}; get(path: string, handler: (req: ServerRequest) => void) { this._get[path] = handler; } route(req: ServerRequest) { if (this._get[req.url]) { return this._get[req.url](req); } return req.respond({ status: 404, body: JSON.stringify({ message: "NOT FOUND" }), }); } } const router = new Router(); router.get( "/", (req: ServerRequest) => req.respond({ status: 200, body: JSON.stringify({ message: "Index" }) }), ); router.get( "/hello", (req: ServerRequest) => req.respond({ status: 200, body: JSON.stringify({ message: "Hello" }) }), ); listenAndServe(options, ((req: ServerRequest) => router.route(req)));