Koajs supercharged. routing. ready-to-use server
MIT License
koa supercharged. middleware library. ready-to-go web-application-server based on koajs v2
$ npm install koa-magic --save
$ yarn add koa-magic
koa-magic provides the following modules
const {Koa, Router, ApplicationServer, ErrorLogger, Dispatcher} = require('koa-magic');
Basic Koa Class extended by routing methods.
Example 1 - path routing
const Router = require('koa-magic').Router;
const Koa = require('koa-magic').Koa;
// initialize koa + router
const webapp = new Koa();
const myrouter = new Router();
// attach handler to root path
koa.get('/helloworld.html', ctx => {
ctx.body = 'Helloworld';
});
// attach router middleware - use attach() of extended Koa!
koa.attach('/hello', myrouter);
// start server
koa.listen(...);
The mount-path is processed by path-to-regexp to enable parametric path expressions. The parameters are exposed by the ctx.params
object.
Note: use .attach()
instead of .use()
to add middleware to the stack. It handles flat middleware functions like (ctx, next) => {}
as well as instances of Router
!
The following methods are provided by each routing instance (or extended Koa class)
HTTP
get(path:string|RegExp, middleware:Promise)
handle http-getpost(path:string|RegExp, middleware:Promise)
handle http-postput(path:string|RegExp, middleware:Promise)
handle http-puthead(path:string|RegExp, middleware:Promise)
handle http-headdelete(path:string|RegExp, middleware:Promise)
handle http-deleteoptions(path:string|RegExp, middleware:Promise)
handle http-optionsall(path:string|RegExp, middleware:Promise)
handle all kind of http-methodsVHOST
vhost(hostname:string|RegExp, middleware:Promise|Router
) virtual host routingROUTING
attach(path:string|RegExp, middleware:Promise|Router
) add a new router to the current stack (like use)Example 1 - path routing
const Router = require('koa-magic').Router;
const Koa = require('koa-magic').Koa;
// initialize koa + router
const webapp = new Koa();
const myrouter = new Router();
myrouter.get('/world.html', ctx => {
ctx.body = "ook";
});
myrouter.post('/:action/:view?', ctx => {
ctx.body = "action:" + ctx.params.action + ' - ' + ctx.params.view;
});
// attach handler to root path
koa.get('/helloworld.html', ctx => {
ctx.body = 'Helloworld';
});
// attach router middleware - use attach() of extended Koa!
koa.attach('/hello', myrouter);
// start server
koa.listen(...);
Example 2 - path routing with request forwarding
const Router = require('koa-magic').Router;
const Koa = require('koa-magic').Koa;
// initialize koa + router
const webapp = new Koa();
const myrouter = new Router();
myrouter.get('(.*)', (ctx, next) => {
dosomething();
return next();
});
myrouter.post('/:action/:view?', ctx => {
ctx.body = "action:" + ctx.params.action + ' - ' + ctx.params.view;
});
// attach router middleware - use attach() of extended Koa!
koa.attach('/mymodule', myrouter);
// start server
koa.listen(...);
Example 3 - vhost routing
const Router = require('koa-magic').Router;
const Koa = require('koa-magic').Koa;
// initialize koa + router
const webapp = new Koa();
const myrouter = new Router();
myrouter.get('/world.html', ctx => {
ctx.body = "ook";
});
// attach router middleware to domain
koa.vhost('example.org', myrouter);
// start server
koa.listen(...);
koa-magic is OpenSource and licensed under the Terms of The MIT License (X11) - your're welcome to contribute