Mengenal Hapi.js

Goo 6 Juli 2022

Mengenal Hapi.js

Hapi.js atau Hapi (kependekan dari Http-API) adalah sebuah open source framework Node.js yang mempunyai slogan “build powerful, scalable applications, with minimal overhead and full out-of-the-box functionality - your code, your way". Hapi merupakan framework yang kaya fungsi, sederhana dan aman.

Banyak digunakan untuk mengembangkan aplikasi web yang dapat diskalakan, membangun RESTful API, membangun service API (Application Programming Interface), situs web, dan aplikasi proxy HTTP. Hapi pada awalnya dikembangkan oleh team mobile di Walmart Labs, untuk menangani traffic pada acara Black Friday, salah satu hari tersibuk dalam belanja online di kalender AS. Namun kini, Hapi telah digunakan oleh banyak perusahaan seperti Brave, Paypal, AuthO.

Installing Hapi

  • Buat direktori baru "myproject"
  • Jalankan: "cd myproject" , ini akan mengarah ke folder projek yang dibuat
  • Jalankan: " npm init " dan ikuti petunjuknya. Ini akan membuat file package.json
  • Jalankan: " npm install @hapi/hapi ", ini akan mengistall versi terbaru dari Hapi.

Install juga nodemon , agar langsung merestart server setiap ada perubahan pada file.

npm install -g nodemon

Menjalankan Hapi

'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();

Pertama, kalian membutuhkan hapi. kemudian kalian menginisiasi sebuah Hapi.server() baru dengan rincian koneksi yang berisi nomor port untuk listen on dan informasi host. Setelah itu kalian dapat mulai menjalankan server.

Ketika membuat server, kalian dapat memberikan nama host, alamat IP, file soket unix, atau Windows bernama pipe untuk mengikat server. Untuk lebih jelasnya, lihat Referensi API.

Menambahkan Routes

Setelah server berjalan, waktunya untuk menambahkan sebuah route yang akan menampilkan "Hello World!" di 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();

Simpan kode diatas sebagai index.js dan mulai jalankan server dengan perintah node index.js. Sekarang kalian akan menemukan bahwa saat kalian mengunjungi http://localhost:3000 di browser, akan muncul teks "Hello World!". Untuk informasi jelasnya, dapat dilihat pada tutorial routing.

Membuat Plugin

Hapi mempunyai sistem plugin yang luas dan kuat, memungkinkan pengguna untuk mudah memecah aplikasi menjadi bagian-bagian dari logika bisnis yang terisolasi, dan utilitas yang dapat digunakan kembali. Pengguna dapat menambah plugin yang ada pada aplikasi, atau membuat sendiri.

Membuat plugin cukup simple - kalian hanya harus menerapkan sebuah properti register dengan diikuti signature async function(server, options). Selain itu objek plugin memiliki properti yang memerlukan name dan beberapa properti opsional termasuk version.

Contoh plugin yang sangat simple:

'use strict';

const myPlugin = {
		name: 'myPlugin',
		version: '1.0.0',
		register: async function (server, options) {

				// Create a route for example

				server.route({
						method: 'GET',
						path: '/test',
						handler: function (request, h) {

								return 'hello, world';
						}
				});

				// etc ...
				await someAsyncMethods();
		}
};

Setelah plugin ini terdaftar, server akan menampilkan 'hello, world' ketika pengguna pergi ke route /test.

Untuk menulis plugin sebagai modul eksternal, kalian dapat menentukan properti pkg.

'use strict';

exports.plugin = {
		pkg: require('./package.json'),
		register: async function (server, options) {

				// Create a route for example

				server.route({
						method: 'GET',
						path: '/test',
						handler: function (request, h) {

								return 'hello, world';
						}
				});

				// etc...
				await someAsyncMethods();
		}
}

Perhatikan bahwa pada contoh pertama, kita menetapkan properti name dan version secara eksplisit, namun pada contoh kedua kita menetapkan parameter pkg dengan isi package.json sebagai nilainya.

Ketika ditulis sebagai modul, plugin dapat berupa modul ekspor tingkat atas sebagai contoh module.exports={register,name,version} atau jika kalian ingin modul yang dapat mengekspor lebih dari plugin hapi, dapat diekspor sebagai exports.plugin={register,name,version}.

Selain itu, objek plugin mungkin berisi multiple properti yang ketika disetel ke true akan memberi tahu happy bahwa aman untuk mendaftarkan plugin lebih dari sekali pada server yang sama.

Properti lain yang tersedia adalah once. Ketika diatur ke true berarti hapi mengabaikan register berikutnya dari plugin yang sama tanpa menimbulkan masalah.

Untuk lebih jelasnya, dapat dilihat pada Plugin Tutorial.

Sekian pengenalan dari hapi.js, untuk referensi API lengkap dapat dilihat di repository GitHub dan Hapi API.

Jika mengalami masalah, silahkan mengunjungi Hapi Support.