v0.1.0
Lightweight Deno middleware framework
Repository
Current version released
6 years ago
Dependencies
std
Versions
deligenius
Lightweight Deno middleware framework
Features
- Light weight (11kb)
- Near deno http module performance
- Body parser middleware option
- Gentle error handling
Quick Start
Hello World example
- Use your favourite editor, copy below to
app.ts
// ./app.ts
import { Application } from "https://raw.githubusercontent.com/deligenius/dg.ts/master/mod.ts";
let app = new Application({ port: 8000 }).listen();
app.use((ctx) => {
ctx.send("Hello World!");
});- Run program with
> deno run --allow-net ./app.tsRouter
If you write code in the express.js way, itโs recommended to use Router, as it comes with restful methods: get, post, put, delete โฆ
import {
Application,
Router,
} from "https://raw.githubusercontent.com/deligenius/dg.ts/master/mod.ts";
let app = new Application({ port: 8000 }).listen();
let router = new Router("/");
app.use(router);
router.get("/", ({ req, res }, next) => {
res.send("You reached " + req.url);
});๐
Use BodyParser
dg.ts has a separate middleware module: bodyParser, which can be used to parse parameter, query, json etc,.
We will use mid from bodyParser which includes many pre-configured middlewares for dg.ts
Get query parameter
import {
Application,
Router,
} from "https://raw.githubusercontent.com/deligenius/dg.ts/master/mod.ts";
import { mid } from "https://raw.githubusercontent.com/deligenius/bodyparser/master/mod.ts";
let app = new Application({ port: 8000 }).listen();
app.use(mid.query(), (ctx) => {
let query = ctx.req.query;
ctx.send(query);
});Get json data
app.use(mid.json(), (ctx) => {
let json = ctx.req.json;
ctx.send(json);
});Get params
app.use(mid.params("/:name/:age"), (ctx) => {
let params = ctx.req.params;
ctx.send(params);
});Get multipart/form-data
- consider use
dg.tsofficial Multiparser
Get urlencoded form data
app.use(mid.urlencoded(), (ctx) => {
let urlencoded = ctx.req.urlencoded;
ctx.send(urlencoded);
});๐
Error handling
dg.ts has a default error handler handleError in every Application and Router
Error handling In middleware
app.use(async (ctx, next) => {
try {
methodThrowError()
} catch (e) {
console.log(e);
}
});Throw HttpError
- All the
throw new HttpError(message, statusCode)will be handled by theapp.handleErrororrouter.handleError
app.use(async (ctx, next) => {
throw new HttpError("no user found", 404)
});Override errorHandler
app.errorHandlerandrouter.errorHandlercan be override
app.handleError = (err, ctx) => {
if (err instanceof HttpError) {
ctx.status(err.status).send("http error");
} else {
ctx.send("some other error");
}
};