Learn HAPI with Real Code Examples
Updated Nov 27, 2025
Installation Setup
Install Node.js (v16+ recommended)
Create a new project: `npm init -y`
Install Hapi: `npm install @hapi/hapi`
Create server and define routes
Run project via `node server.js`
Environment Setup
Install Node.js
Initialize project with npm
Install Hapi and required plugins
Implement routes, handlers, and plugins
Run server locally and test
Config Files
package.json - project dependencies
server.js - main Hapi server
routes/ - route definitions
plugins/ - modular features
handlers/ - route logic
Cli Commands
npm init -y - create project
npm install @hapi/hapi - install Hapi
node server.js - run server
npm test - run tests
npm install <plugin> - add Hapi plugin
Internationalization
Optional via third-party Node.js i18n packages
UTF-8 content supported
Locale selection handled in handlers
Translation bundles configurable
Integrates with external i18n tools if needed
Accessibility
APIs accessible via HTTP clients
CORS configuration supported
Server-rendered templates can include ARIA attributes
Input validation to prevent malformed requests
Testing with Lab and automated scripts
Ui Styling
Primarily JSON APIs
Optional templating via Vision or Handlebars
Serve static files with Inert
Integrate front-end frameworks (React/Vue/Angular)
CSS frameworks optional for server-rendered pages
State Management
Server and plugin instances manage application state
Caching and session storage via Catbox
Handlers process per-request state
Lifecycle methods can manipulate request/response state
Shared configuration accessible across plugins
Data Management
Database connections via ORMs or native drivers
Caching frequently accessed data
Sessions for user state
Request payload validation and sanitization
Logging request and error data