dp6-base-hapi
v1.2.11
Published
A base hapi configuration for my new API projects
Downloads
11
Readme
dp6LibBaseHapi
A base hapi configuration for my new API projects
Pre-Requisites
- node 8.10 or greater
- npm 6.1.0 or greater
- redis 4.0 or greater
Usage
const baseConfig = require('base-hapi');
(async () => {
const server = await baseConfig;
await server.start();
console.log(`Server started at ${server.info.uri}`);
// server started at http://localhost:4000
})();
If you want to change the HOST and PORT you can do it by setting up two variable environments
HOST=192.168.1.25
PORT=2000
Configuration
Out of the box base-hapi comes with many defaults:
- Catbox Redis with the following configuration
{
name: process.env.CATBOX_REDIS_NAME || 'catbox-redis',
// engine: require(catbox-redis),
partition: process.env.CATBOX_PARTITION_NAME || 'cache',
host: process.env.REDIS_HOST || 'localhost',
port: process.env.REDIST_PORT || 6379,
},
- Sentry for logging management. You will need an account here Now you can pass your sentry environment and dsn with these environment variables
options: {
environment: process.env.NODE_ENV,
dsn: process.env.SENTRY_DNS,
},
- For authentication you must define a function with your logic inside of it.
async function validate(token) {
// your custom validation here
// return true to pass to the handler
// return false to return a 401 to client
// credentials can be used inside your handlers in the request object
// request.auth.credentials
return { isValid: true, credentials: { id: 1 } };
}
const server = await baseConfig({ validate });
- Adding plugins
const myPlugin = {
name: 'my-plugin',
register(server) {
server.route({
handler() {
return 'I am a plugin';
},
method: 'GET',
path: '/my-plugin',
});
},
version: '1.0.0',
};
const plugins = [myPlugin];
const server = await baseConfig({ plugins });
- The objection-paginate plugin is included.
const server = await baseConfig();
server.route({
method: 'GET',
path: '/pagination',
handler(request, h) {
return h.paginate({ results: [], total: 20 }, request.query);
},
});
If you do not specify a limit in the query parameters it will use the OFFSET_DEFAULT environment variable
OFFSET_DEFAULT = 10