uw-microbe.js v2.0.0
uw-microbe.js
Microbe is an abstraction for the repetitive task of setting basic express infrastructure each time we bring up another μService.
API
new Microbe([root = process.cwd()])- create an instance of a service passing it's name (used for loggers etc.) and root directory (for operational endpoitns etc.)Microbe.build()- builds the system, needs to be called before startingMicrobe.start(port)- starts the server on given portMicrobe.container- returns instance of DI containerMicrobe.configure(configPath)- loads yml file into canister.js configurationMicrobe.before(middleware)- attaches middleware to run before any routes are evaluatedMicrobe.after(middleware)- attaches middleware to run after routes are evaluatedMicrobe.route() : express.Router- returns an instance of Router, attach your handlers hereMicrobe.health(callback)- adds a health checker per uw-lib-operational.jsMicrobe.ready(callback)- sets a ready checker per uw-lib-operational.js
Bits out of the box
Logging
There's both request and error logging via bunyan available out of the box.
A request scope logger, with request-id and x-request-id is available on req.logger property.
Instrumentation
Available in the container via get('instrumentation'). Default heap and request durations are preconfigured as well as /__/metrics for reporter.
Health
Endpoints exposed via default /__/{name} routes. You can configure your checks as described in the API section above.
Other services
Check wiring.yml for additional services.
Wiring
For reference on wiring go to https://github.com/michael-donat/canister.js
Before/After ware
Those can be added by either using your the API or tagging services with before.router and after.router.
Example
const Microbe = require('uw-microbe.js');
const system = new Microbe(__dirname);
system.configure('./wiring.yml');
system.build();
system.router.get('/', (req, res) => {
res.json({ok: true});
})
system.pre.use((req, res, next) => {
console.log('Some preware');
next();
});
system.start(3321);