0.0.11 • Published 5 years ago

engined-http v0.0.11

Weekly downloads
17
License
MIT
Repository
github
Last release
5 years ago

engined-http

HTTP agent service for engined, which is based on koa 2.

NPM

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(錢逢祥) <cfsghost@gmail.com>

0.0.11

5 years ago

0.0.10

7 years ago

0.0.9

7 years ago

0.0.8

7 years ago

0.0.7

7 years ago

0.0.6

7 years ago

0.0.5

7 years ago

0.0.4

7 years ago

0.0.3

7 years ago

0.0.2

7 years ago

0.0.1

7 years ago