Skip to content

Instantly share code, notes, and snippets.

@duyquach-castr
Created May 24, 2022 02:54
Show Gist options
  • Save duyquach-castr/9eb87260cdc8e98de2377a57adf939c9 to your computer and use it in GitHub Desktop.
Save duyquach-castr/9eb87260cdc8e98de2377a57adf939c9 to your computer and use it in GitHub Desktop.
HapiJS sample code
const _ = require('lodash')
const Hapi = require('@hapi/hapi');
const readme = require('readmeio');
const init = async () => {
const server = Hapi.server({
port: 4040,
host: 'localhost'
});
function handler(req, h) {
const { response, info } = req
readme.log(config.readmeio.apiKey, req.raw.req, req.raw.res, {
label: req.auth.userId,
startedDateTime: new Date(info?.received),
responseEndDateTime: new Date(info?.responded),
requestBody: Object.assign(req.params, req.payload),
responseBody: response.source
}, {})
if (response.isBoom) { return h.continue }
if (req.method === 'options') {
const allowedHeaders = [..._.keys(req.headers), 'content-type', 'auth-token', 'x-requested-with']
response.header('Access-Control-Allow-Origin', '*')
response.header('Access-Control-Allow-Methods', 'OPTIONS, PUT, POST, HEAD, GET, DELETE')
response.header('Access-Control-Allow-Headers', allowedHeaders.join(', '))
}
console.timeEnd(`request time: ${req.info.id} ${req.path} :`)
return response
}
// Option 1: failed
server.ext('onPreResponse', handler);
// Option 2: failed
server.ext('onPostResponse', handler);
server.route({
method: 'GET',
path: '/',
handler: (req, h) => {
return { message: 'hello world!' };
}
});
await server.start();
console.log('Server running on %s', server.info.uri);
};
process.on('unhandledRejection', (err) => {
console.log(err);
process.exit(1);
});
init();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment