nodecloud-gateway
nodecloud-gateway is a gateway component in microsoft service system. It is inspired by Zuul. It is based on koa middleware mechanism.
The lib is developing without any production verifications
Get Started
Install it via npm:
npm install --save nodecloud-gateway
Implements a filter extends PreGatewayFilter
(or AbstractGatewayFilter
, RouteGatewayFilter
, PostGatewayFilter
).
The filter which extends PreGatewayfilter
will be executed first. The following filters extend RouteGatewayFilter
and PostGatewayFilter
classes.
import {PreGatewayFilter} from 'nodecloud-gateway';
export default class DebugPreGatewayFilter extends PreGatewayFilter {
constructor(app) {
super(app);
}
async action(ctx) {
ctx.set('x-gateway', true);
}
}
Use it with koa framework:
import Koa from 'koa';
import {NodeGateway} from 'nodecloud-gateway';
import DebugPreGatewayFilter from './DebugPreGatewayFilter'
const gateway = new NodeGateway();
const app = new Koa();
gateway.init(app, [DebugPreGatewayFilter])
app.listen(3000);
Use it with nodecloud-boot, and You must create routeConfig
import NCBoot from 'nodecloud-boot';
import Koa from 'koa';
import {NodeGateway} from 'nodecloud-gateway';
const ncBoot = NCBoot.getInstance(__dirname);
const app = new Koa();
const gateway = new NodeGateway();
const routeConfig = {
prefix: '/api',
routes: {
'service0': {
path: '/example1/**'
},
'service1': {
path: '/example/**',
ignorePattern: /\/example\/a\//
}
}
};
ncBoot.initApp(()=>{
NodeGateway.initWithService(app, null, routeConfig, ncboot.client);
return app.callback();
})
API
routeConfig
Issues