0.0.3 • Published 8 years ago
falcor-hapi v0.0.3
falcor-hapi
Server middleware for falcor-hapi
Working usage example of the basic repro in falcor-hapi-demo/
Usage
Minimalistic example
var FalcorServer = require('falcor-hapi');
var Hapi = require('hapi');
var TestRouter = <your router here>;
var app = new Hapi.Server();
app.connection({
host: "localhost",
port: 9090
});
app.route({
method: ['GET', 'POST'],
path: '/model.json',
handler: FalcorServer.dataSourceRoute(function(req, res) {
return new TestRouter();
})
});
app.start();
Hapi Plugin Usage
You can also register this module as an Hapi Plugin and use its provided Falcor handler.
Features
- Provides restful router with cached routes out of the box.
- Both the Hapi Request and Reply are available within your routes as
this.req
andthis.reply
. - Validates your routes with JOI.
- You can provide your own initialize method to the router.
Alternately, you can provide your own Router class and the handler will mixin the logic to cache your routes and the base Falcor router class.
var Hapi = require('hapi'); var app = new Hapi.Server(); app.connection({ host: "localhost", port: 9090 }); app.register(require('falcor-hapi'), function (err) { if (err) { console.error('Failed to load plugin:', err); } app.route({ method: ['GET', 'POST'], path: '/model.json', handler: { falcor: { routes: routes, // Your routes cacheRoutes: true, // Whether to cache your routes, default to true options: {debug: true}, // Option to give to Falcor router initialize: function() { // Optional initialize method this.foo = this.req.payload.meaningoflife || 42; }, routerClass: MyRouterClass // Optional routerClass to use } } }); app.start(); });
## Development
Please run linting before pushing on repo
npm run lint
## Todo
* Create mocha test for regression and development instead of using example