Skip to main content

OAK Middlewares

This is collection of Custom middleware for oak server.

requestTraceMiddleware

inspired by morgan

import:

import { requestTraceMiddleware } from "https://raw.githubusercontent.com/deepakshrma/oak_middlewares/master/mod.ts";

How to use it:

import { Application, Middleware } from "https://deno.land/x/oak/mod.ts";
import { requestTraceMiddleware } from "https://raw.githubusercontent.com/deepakshrma/oak_middlewares/master/mod.ts";

const app = new Application();

app.use(requestTraceMiddleware<Middleware>());
app.use(
  requestTraceMiddleware<Middleware>({ type: "combined" })
);
app.use(
  requestTraceMiddleware<Middleware>({ type: "common" })
);
app.use(
  requestTraceMiddleware<Middleware>({ type: "dev" })
);
app.use(
  requestTraceMiddleware<Middleware>({ type: "short" })
);

// This will not print since log level is higher
// More options: import { Logger, LoggerOptions } from "https://deno.land/x/deno_util/logger.ts";
app.use(
  requestTraceMiddleware<Middleware>({
    type: "tiny",
    loggerOptions: { level: 1 },
  })
);

// Disable logger, use raw console.log
app.use(
  requestTraceMiddleware<Middleware>({
    type: "tiny",
    raw: true,
  })
);

app.use((ctx) => {
  ctx.response.body = "Hello world!";
});
console.log("server is running on: http://localhost:8080");
await app.listen(":8080");

How to run:

deno run -A examples/request_trace_demo.ts

Output:

out

types

type format
combined “:remote-addr - :method :url :status :content-length :referrer :user-agent”
common “:remote-addr - :method :url :status :content-length”
dev “:method :url :status :response-time - :content-length”
short “:remote-addr :method :url :status :content-length :response-time”
tiny “:method :url :status :content-length :response-time”

More examples: examples

Note: Lib is still WIP

Cheers! keep coding!