Ce diaporama a bien été signalé.
Le téléchargement de votre SlideShare est en cours. ×

An Introduction to hapi.js

Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Chargement dans…3
×

Consultez-les par la suite

1 sur 16 Publicité

Plus De Contenu Connexe

Diaporamas pour vous (19)

Similaire à An Introduction to hapi.js (20)

Publicité

Plus récents (20)

An Introduction to hapi.js

  1. 1. An introduction to hapi.js Dave Stevens @davestevens84 | davestevens84@gmail.com
  2. 2. What is hapi.js? • Framework for building web applications and services • Eran Hammer • Walmart • Robust, Stable, Reliable • Security is a key consideration
  3. 3. BENEFITS What’s so great about hapi
  4. 4. Modularization • Allows for logical modularization of your application • Rich plugin interface • Large application can be easily distributed over multiple smaller modules
  5. 5. Tested at scale • All Walmart Black Friday traffic 2 years running • Didn’t explode • APIs and web applications at Yahoo, Disney, Paypal and Zappos
  6. 6. Eco-system • Good (process monitoring and logging) • Good-replay (replay log events!) • Glue (compose servers from manifests) • TV (Interactive debug console) • Joi (Schema validation) • Etc… https://github.com/hapijs
  7. 7. Installing • npm install --save hapi
  8. 8. Creating a server var Hapi = require(‘hapi’); var server = new Hapi.Server(); server.connection({ host:’localhost’, port: 9009 });
  9. 9. Creating a server (2) server.route({ path: ‘/’, method: ‘GET’, handler: function (request, reply) { reply(‘Hi VegasJS!’); } }); server.start();
  10. 10. Routing server.route({ path: ‘/’, method: ‘GET’, handler: function (request, reply) { reply(‘Hi VegasJS!’); } }); Values surrounded by {} populate request.params in handler e.g. path:‘/name/{firstname}’ would mean that /name/dave results in request.params.firstname being equal to ‘dave’ Very configurable to handle multitude of eventualities – one example, multi-segment parameters: path: ‘/name/{names*}’ then requesting /name/dave/andrew/stevens would result in request.params.names being ‘dave/andrew/stevens’ which we can split on ‘/’ to create array, etc.
  11. 11. Routing server.route({ path: ‘/’, method: ‘GET’, handler: function (request, reply) { reply(‘Hi VegasJS!’); } }); Specify HTTP method here, can also have multiple methods in An array eg. method: [‘PUT’, ‘POST’],
  12. 12. Routing server.route({ path: ‘/’, method: ‘GET’, handler: function (request, reply) { reply(‘Hi VegasJS!’); } });
  13. 13. Plugins • Allow you to build out your application components as self-contained modules • Also manipulate requests and other events, hook in to server events, etc. • Kinda like middleware but think bigger!
  14. 14. Decorate • Avoid duplicate code by using server.decorate server.decorate(‘reply’, ‘error’, function (err) { console.error(err); return this.response({message: ‘There was an error’}).code(500); }); // in handler, reply.error(err);
  15. 15. Next Steps • > npm install –g makemehapi • > makemehapi • Challenges and guided learning! • Talk to me • #hapijs on Twitter (official: @hapijs) • #hapi on Freenode IRC • http://bit.ly/orghapi
  16. 16. Obligatory “Look, I Finished” Slide • Twitter @davestevens84 • Email davestevens84@gmail.com • Accost me in the street

×