This Repo is a Hapi plugin, that adds the possibility to define demo handlers.
The demo handler will be called instead of the original handler, if certain conditions are met.
A possible use-case is to setup routes with demo data, but without adding additional code into the existing code-base.
npm i --save hapi-demo
Set up a hapi server and register the plugin.
import Hapi from 'hapi';
import HapiDemo from 'hapi-demo'
const server = new Hapi.Server();
server.register(HapiDemo)
.then(() => {
console.log('plugin has been registered successfully');
});
When setting up routes, configure the demo handler if necessary:
import Joi from 'joi';
server.route({
method: 'GET',
path: '/test',
handler(request, reply) {
return reply('test handler called');
},
config: {
plugins: {
'hapi-demo': {
shouldApplyHandler(request) {
return request.query.demo;
},
handler(request, reply) {
return reply('demo handler called');
}
}
},
validate: {
query: Joi.object().keys({
demo: Joi.boolean()
})
}
}
});
Now when calling the /test
route without any query parameters the normal hander will be called, but when
calling it with query parameters like /test?demo=true
, then the demo handler will be called.
test
: {function(request: Hapi.Request) : Boolean} - test function that returns if the demo-handler should be calledhandler
: {function(reqest: Hapi.Request, reply: Hapi.Reply)} - demo handler