0.0.1 • Published 5 years ago
koa-mid-end v0.0.1
koa-mid-end
Mid end middleware for koa
Installation
Install using npm:
npm install koa-mid-end
API Reference
MidEnd
Kind: Exported class
new MidEnd(opts)
Create a new midEnd.
Param | Type | Description |
---|---|---|
opts | Object | |
opts.layer | Object | prefix router paths |
Example Basic usage:
var Koa = require('koa');
var MidEnd = require('koa-mid-end');
var app = new Koa();
var midEnd = new MidEnd();
midEnd
.setLayers(/***/)
.sethooks(/***/);
app.use(midEnd.getMiddleware());
midEnd.setLayers(option)
Match URL patterns to request-forward actions using midEnd.setLayers()
Param | Type | Description |
---|---|---|
option | Object | layers mapped by http methods |
Example Basic usage:
forward the request get /v2/sourcesA/**/sourcesB/**
to get /v1/sourcesA/**/sourcesB/**
midEnd.setLayers(path.join(__dirname, "./yaml/backend-apis.yaml"))
# backend-apis.yaml
get:
- originUrl: /v2/sourcesA/:param1/sourcesB/:param2
host: http://www.***.com
url: /v1/sourcesA/${param1}/sourcesB/${param2}
method: get
desprition: v1 upgraded to v2
or
# backend-apis.yaml
get:
- originUrl: /v2/sourcesA/(.*)/sourcesB/(.*)
host: http://www.***.com
url: /v1/sourcesA/${0}/sourcesB/${1}
method: get
desprition: v1 upgraded to v2
or
# backend-apis.yaml
get:
- originUrl: /v2/(.*)
host: http://www.***.com
url: /v1/${0}
method: get
desprition: v1 upgraded to v2
midEnd.resetLayers(option)
remove all layers & setLayers
midEnd.setHooks(option)
Param | Type | Description |
---|---|---|
option | Object | layers mapped hookID |
Example Basic usage:
check the headers before forwarding request & change response after.
midEnd
.setLayers(path.join(__dirname, "./yaml/backend-apis.yaml"))
.setHooks(path.join(__dirname, "./hooks"))
# backend-apis.yaml
get:
- originUrl: /app/(.*)
host: http://www.***.com
url: /web/${0}
method: get
desprition: forward the app reqeust to web service & checkHeaders & change response
hooks:
before: checkHeaders # this value can be an array like [checkHeaders,...] or - checkHeaders
after: changeResponse # same as before
// hooks/checkHeaders.js
module.exports = async (ctx, next) => {
var headers = ctx.headers;
// check headers.
next();
};
// hooks/changeResponse.js
module.exports = async (ctx, next) => {
var body = ctx.body;
// change body.
ctx.body = body;
next();
};
midEnd.resetHooks(option)
remove all hooks & setHooks
midEnd.getMiddleware()
Return the middleware which forwards matched request.
midEnd.getHandler(method, name, options)
With koa-router. Example Basic usage:
# backend-apis.yaml
get:
- originUrl: /v2/sourcesA/(.*)/sourcesB/(.*)
host: http://www.***.com
url: /v1/sourcesA/${0}/sourcesB/${1}
method: get
name: getSourcesB
desprition: v1 upgraded to v2
post:
- originUrl: /v2/sourcesA/(.*)/sourcesB
host: http://www.***.com
url: /v1/sourcesA/${0}/sourcesB/${1}
method: get
name: getSourcesB
desprition: v1 upgraded to v2
var Koa = require('koa');
var Router = require('koa-router');
var MidEnd = require('koa-mid-end');
var app = new Koa();
var router = new Router();
var midEnd = new MidEnd();
midEnd
.setLayers(/***/)
.sethooks(/***/);
router.get('/mid-end/sourcesA/(.*)/sourcesB/(.*)',
midEnd.getHandler('get', 'getSourcesB'),
(ctx, next) => {
let responseFromBackend = ctx.responseFromBackends['get-getSourcesB'];
// ...
}
);
app
.use(router.routes())
.use(router.allowedMethods());
Tests
...
0.0.1
5 years ago