v0.1.0
Lightweight Deno middleware framework
Repository
Current version released
4 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.ts
Router
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
query
parameter
Get 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);
});
json
data
Get app.use(mid.json(), (ctx) => {
let json = ctx.req.json;
ctx.send(json);
});
params
Get app.use(mid.params("/:name/:age"), (ctx) => {
let params = ctx.req.params;
ctx.send(params);
});
multipart/form-data
Get - consider use
dg.ts
official Multiparser
urlencoded
form data
Get 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.handleError
orrouter.handleError
app.use(async (ctx, next) => {
throw new HttpError("no user found", 404)
});
errorHandler
Override app.errorHandler
androuter.errorHandler
can be override
app.handleError = (err, ctx) => {
if (err instanceof HttpError) {
ctx.status(err.status).send("http error");
} else {
ctx.send("some other error");
}
};