restify-microservice
v0.1.1
Published
a restify.js based microservice library, inspired by sails.js
Downloads
4
Maintainers
Readme
restify-microservice
a restify.js based microservice library, inspired by sails.js
Install
npm install --save restify-microservice
Purpose
To provide a highly customizable platform for a well-organized restify.js app, using hooks
. By default, restify-microservice
comes bundled with hooks for middleware, models, controllers, services, policies, routing, etc. However, this module allows you to implement custom hooks extremely easily, as well as disable, override, or reorder the default hooks. More importantly, this module makes no assumption regarding which other third party libraries (ORMs, middleware, templating engines, etc) you'd like to use in your app. In fact, using restify is entirely optional, and can be disabled by excluding the server
hook or implementing your own
Docs
Configuration
Bundled Hooks
restify-microservice
comes bundled with the following hooks:
- connections
- models
- server
- services
- policies
- controllers
- routes
The default hooks configuration is shown below. You can override this by providing your own configuration in config/hooks.js
.
module.exports = [
'connections',
'models',
'server',
'services',
'policies',
'controllers',
'routes'
];
To implement your own hook configuration, define your own config/hooks.js
file:
config/hooks.js
module.exports = [
'server',
'services',
require('../hooks/my-hook.js'), // custom project hook
'controllers',
'super-cool-hook', // installable hook
require('../hooks/my-own-routes-hook') // custom project hook
];
Custom Hooks
Implementing a custom hook is as easy as requiring a file/module that exports a function that accepts a single callback. The function is bound to the microservice
context, which allows you to manipulate any aspect of the microservice
.
hooks/my-hook.js
module.exports = function(done) {
var microservice = this;
// this assumes that the `services` hook was run prior to this hook and that
// we implemented a service `app/services/dynamoDB.js` that exports a dynamoDB
// document client
microservice.services['dynamoDB'].put({
TableName: 'service-logs',
Item: {
'service': 'my-service',
'event': 'starting',
'info': {
'date': Date.now()
}
}
}, function(err, data) {
if (err) {
microservice.log('error', err);
return done(err);
}
done();
});
};
Installable Hooks & Adapters
Hooks
To use these hooks, simply install them via npm install --save <insert hook name here>
and require them in your config/hooks.js
file.
- restify-microservice-mongoose-rest
- Creates restful mongoose controllers for your mongoose models using restify-mongoose
Adapters
- restify-microservice-mongoose
- mongoose adapter
Testing
run all tests
npm test
run coverage
grunt coverage
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request
License
Copyright (c) 2015 Chris Ludden. Licensed under the MIT license.