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
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);
}
// Likes the koa middleware
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();
// All responses have the header 'x-gateway: true'
gateway.init(app, [DebugPreGatewayFilter])
// other koa logic and middlewares
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(()=>{
// other koa logic and middlewares
NodeGateway.initWithService(app, null, routeConfig, ncboot.client);
return app.callback();
})