Hapi is an open-source and rich Node.js framework created and actively maintained by Eran Hammer. Hapi is a rich framework for building applications and services. It enables developers to focus on writing reusable application logic instead of spending time building infrastructure.
Several organizations such as Paypal, Vendigo, Clarify, Pling, and Npm already use Hapiin production. Hapi is a framework that gives you greater flexibility when compared to other Node.js frameworks. It is also perfect for grounds up development. The documentation is detailed, and there is a vibrant community of users. Furthermore, there are dozens of plugins for virtually any feature you are trying to build into your application.
Overview
This tutorial will show how to set up a basic hapi server that displays "Hello World!" in your browser.
Installing hapi
Create a new directory
myproject
, and from there:- Run:
cd myproject
, this goes into the created project folder. - Run:
npm init
and follow the prompts. This will generate a package.json file for you. - Run:
npm install @hapi/hapi
, this will install the latest version of hapi as a dependency in your package.json.
Creating a Server
A very basic hapi server looks like the following:
'use strict';
const Hapi = require('@hapi/hapi');
const init = async () => {
const server = Hapi.server({
port: 3000,
host: 'localhost'
});
await server.start();
console.log('Server running on %s', server.info.uri);
};
process.on('unhandledRejection', (err) => {
console.log(err);
process.exit(1);
});
init();
First, you require hapi. Then you initialize a new
Hapi.server()
with connection details containing a port number to listen on and the host information. After that you start the server and log that it's running.
When creating a server, you can provide a hostname, IP address, a Unix socket file, or Windows named pipe to bind the server to. For more details, see the API reference.
The
host
property set to localhost
is likely the safest choice. In a docker container, however, the localhost may not be accessible outside of the container and using host: '0.0.0.0'
may be needed.Adding Routes
After you get the server up and running, its time to add a route that will display "Hello World!" in your browser.
'use strict';
const Hapi = require('@hapi/hapi');
const init = async () => {
const server = Hapi.server({
port: 3000,
host: 'localhost'
});
server.route({
method: 'GET',
path:'/',
handler: (request, h) => {
return '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();
Save the above as
index.js
and start the server with the command node index.js
. Now you'll find that if you visit http://localhost:3000
in your browser, you'll see the text 'Hello, World!'.
The
method
property can be any valid HTTP method, array of HTTP methods, or an asterisk to allow any method.
The
path
property defines the path including parameters. It can contain optional parameters, numbered parameters, and even wildcards. For more details, see the routing tutorial.
The
handler
function performs the main business logic of the route and sets the response. The handler
must return a value, a promise, or throw an error.Everything Else
hapi has many, many other capabilities and only a select few are documented in tutorials here. This tutorial was intentionally minimal, we highly recommend you to check out the plugins tutorial. It will give some more knowledge to better organize your hapi project. We also have other tutorials of interest, please use the list to your right to check them out. Everything else is documented in the API referenceand, as always, feel free to ask questions on github or just visit us on slack.
No comments:
Post a Comment