engined-http
v0.0.11
Published
http agent service for engined
Downloads
360
Readme
engined-http
HTTP agent service for engined, which is based on koa 2
.
Installation
Install via NPM:
npm install engined-http
Usage
Start HTTP agent service in engined, see example below:
const { Manager } = require('engined');
const HTTPService = require('engined-http');
const MyHTTPService = HTTPService({
port: 8080, // optional: default to 3001 if not set
agentName: 'MyHTTP' // optional: default to 'default' if not set
});
const main = async () => {
// Create manager
let serviceManager = new Manager({ verbose: true });
// Adding agent to manager
serviceManager.add('MyHTTPService', MyHTTPService);
// Start all services
await serviceManager.startAll();
};
main();
Setup Router
For HTTP routing, there is a way to inherit RouterService
class to create a router service to manage routes by using koa-router
.
const Router = require('koa-router');
const { RouterService } = require('engined-http');
// Create service prototype and specify agent
const Service = RouterService({
agentName: 'MyHTTP' // optional: default to 'default' if not set
});
class MyRouterService extends Service {
async setupRoutes() {
let router = Router();
router.get('/', async (ctx) => {
ctx.body = 'Hello!';
});
return router;
}
}
Note: remember to add this service to engined service manager and start it.
Setup Middlewares
By default, HTTP service will apply koa-logger
, koa2-cors
and koa-bodyparser
middlewares. If you would like to apply any perfered middlewares, just override setupMiddleware
method of service.
class MyHTTPService extends HTTPService{{ port: 8080 }} {
async setupMiddleware() {
// Apply original `koa-logger`, `koa2-cors` and `koa-bodyparser` if you still need it
await this._setupMiddleware();
// Add your middleware
this.agent.use(async (ctx) => {
// Do something
});
}
}
Setup CORS (Cross-Origin Resource Sharing)
By override setupCORS
method of service, to make settings as parameter for koa2-cors
to support CORS.
class MyHTTPService extends HTTPService{{ port: 8080 }} {
async setupCORS() {
return { origin: '*' };
}
}
Setup Body Parser
The body parser is common middleware to parse HTTP body, we can have settings supported by koa-bodyparser
.
class MyHTTPService extends HTTPService{{ port: 8080 }} {
async setupBodyParser() {
return {
jsonLimit: '50mb',
textLimit: '50mb'
};
}
}
Setup Views Renderer
By override setupViews
method of service, to enable and setup prefered view renderer.
The returned object for settings:
- path: Where your views are located. Must be an absolute path. All rendered views are relative to this path
- templateEngine: The loaded module of template engine
- options: options object as parameter to
koa-views
class MyHTTPService extends HTTPService{{ port: 8080 }} {
async setupViews() {
return {
path: path.join(__dirname, '..', 'views'),
templateEngine: require('pug'),
options: {
extension: 'pug',
map: {
html: 'pug'
}
}
};
}
}
License
Licensed under the MIT License
Authors
Copyright(c) 2017 Fred Chien(錢逢祥) <[email protected]>