restify-abstract-config v0.3.1
restify-abstract-config
Install
$ npm install restify-abstract-configUsage
Use the AbstractAPI class to fast track configuring Restify HTTP methods to your
own concrete type's instance methods.
For example:
// $PROJECT_ROOT/app/routes/some-custom-api.js
'use strict';
const AbstractAPI = require("restify-abstract-config").AbstractAPI;
class SomeCustomAPI extends AbstractAPI {
constructor() {
super();
this.addGet('get', '/api/custom/:id', this.get);
this.addGet('getAll', '/api/custom', this.getAll);
this.addPut('update', '/api/custom/:id', this.update);
this.addDelete('delete', '/api/custom/:id', this.delete);
this.addPost('create', '/api/custom', this.create);
}
get(req, res, next) {
res.send('get');
next();
}
getAll(req, res, next) {
res.send('getAll');
next();
}
update(req, res, next) {
res.send('update');
next();
}
delete(req, res, next) {
res.send('delete');
next();
}
create(req, res, next) {
res.send('create');
next();
}
}
module.exports = new SomeCustomAPI();What is important here is that the server in following code snippet is the
instance you get after executing createServer() on the restify module (This
is showcased in another code snippet below).
Execute the setup of your routes above as follows (of course you can invoke this as you see fit in your own code base):
// $PROJECT_ROOT/app/routes/index.js
'use strict';
const someCustomAPI = require('./some-custom-api');
module.exports = {
setup: function(server) {
someCustomAPI.setupRoutes(server);
//Print this API's endpoints
someCustomAPI.endpointsInfo();
//Print all the Restify-configured routes
someCustomAPI.allRoutesInfo(server);
}
}If you want the version of your project's package.json available at an endpoint as well, be sure to provide
a second argument to the above setupRoutes function:
someCustomAPI.setupRoutes(server, '/api/version');You can use an endpoint URL of your choice.
Ensure that the above setup function is called again eg:
// $PROJECT_ROOT/server.js
'use strict';
let restify = require('restify');
let routes = require('./app/routes');
let server = restify.createServer();
routes.setup(server);
server.listen(8080, function() {
console.log('%s listening at %s', server.name, server.url);
});License
Bugs
See https://github.com/0v3rst33r/restify-abstract-config/issues.