hapi.js helpers
https://github.com/rsp/node-hapi-helpers (readme)
Some helper functions for hapi.js to write less boilerplate code.
Currently it only simplifies the routes definitions. Feature requests welcome via issues.
It has no dependencies - only some devDependencies (it uses chai, mocha, istanbul and coveralls for testing and test coverage, and Travis for continuous integration, see: https://travis-ci.org/rsp/node-hapi-helpers)
Example
You can write:
server;
Instead of:
server;
Installation
Install to use in your project, updating the dependencies in package.json:
npm install hapi-helpers --save
Usage
To use hh.get()
, hh.post()
etc:
var hh = ;
To use just get()
, post()
etc:
var hh = get = hhget post = hhpost; // ...
Or using the ES6 destructuring assignment:
var get post = ;
Routes
To simplify the definition of routes in hapi.js you can use:
hh.route(method, path, handler, config)
where config
is optional
and method
can be a string or a list of strings e.g.:
'GET'
'get'
['get', 'post']
'get post'
You can use either 'del'
or 'delete'
for the DELETE method.
For example: hh.route('get post', path, handler, config)
It is a shortcut for:
method: 'GET' 'POST' path: path handler: handler config: config
hh.get(path, handler, config)
(config
is optional) is a shortcut for:
method: 'GET' path: path handler: handler config: config
hh.post(path, handler, config)
(config
is optional) is a shortcut for:
method: 'POST' path: path handler: handler config: config
hh.put(path, handler, config)
(config
is optional) is a shortcut for:
method: 'PUT' path: path handler: handler config: config
hh.patch(path, handler, config)
(config
is optional) is a shortcut for:
method: 'PATCH' path: path handler: handler config: config
hh.del(path, handler, config)
(config
is optional) is a shortcut for:
method: 'DELETE' path: path handler: handler config: config
Note: it is .del()
and not .delete()
because delete
is a reserved word in JavaScript.
hh.options(path, handler, config)
(config
is optional) is a shortcut for:
method: 'OPTIONS' path: path handler: handler config: config
hh.all(path, handler, config)
(config
is optional) is a shortcut for:
method: '*' path: path handler: handler config: config
Real world example
Here is real world example, a route from hapi-example by Wyatt Preul:
var Types = types; moduleexports = method: 'GET' path: '/products' config: handler: getProducts validate: query: name: Types method: 'GET' path: '/products/{id}' config: handler: getProduct method: 'POST' path: '/products' config: handler: addProduct payload: 'parse' validate: payload: name: Types ;
Here is the same using hapi-helpers, available on hapi-helpers-example:
var Types = types hh = get = hhget post = hhpost; moduleexports = ;
The biggest difference is for simple routes like '/products/{id}'
which is one simple line with hapi-helpers.
This is work in progress - more to come.
Issues
For any bug reports or feature requests please post an issue on GitHub.
Author
Rafał Pocztarski - https://github.com/rsp
License
MIT License (Expat). See LICENSE.md for details.