A Middleware Framework for Deno's Http Serve

A middleware framework for Deno’s http serve. Transplanted from Koa.

Quick start

A basic usage, responding to every request with Hello World;

import { App } from "https://deno.land/x/doa/mod.ts";

const app = new App();

app.use(async ctx => {
  ctx.status = 200;
  ctx.body = "Hello World";
});

app.listen({ port: 8000 });

Adding middlewares through app.use(middleware), will cause all of the middlewares to be executed upon each request in the specified order. When you call the middleware, it passed the context and next method in the stack.

A more complex example with responseTime middleware, which will add x-response-time in the response header:

import { App } from "https://deno.land/x/doa/mod.ts";
import { responseTime } from "https://deno.land/x/response-time/mod.ts";

const app = new App();

app.use(responseTime());

app.use(async ctx => {
  ctx.status = 200;
  ctx.body = "Hello World";
});

app.listen({ port: 8000 });

docs

For more information see https://koajs.com/.

Running tests

More than 190 test cases( over 90% ) to ensure code quality.

$ deno test --allow-read --allow-write --allow-net --allow-hrtime  

# test result: ok. 191 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out 

Running benchmarks

Use wrk to benchmark doa.

$  make -C benchmarks 

Trouble Shooting

Make sure you are using deno version 1.1.3 and std 0.59.0. Doa will continue to update deno to the latest version later.

Download Details:

Author: JohannLai

GitHub: https://github.com/JohannLai/doa

#deno #javascript #nodejs #node

A Middleware Framework for Deno's Http Serve
2.35 GEEK