Membuat Web Service Menggunakan Framework Hapi JS

Andro Syahreza
5 min readMar 7, 2023

--

Dalam era digital saat ini, penggunaan web service semakin populer untuk mengintegrasikan aplikasi dan melakukan pertukaran data. Web service dapat diimplementasikan melalui teknologi pendukung dan protokol standar. Teknologi tersebut di antaranya adalah SOAP dan REST. Sementara itu, protokol standar yang umum digunakan adalah HTTP, SMTP, dan FTP.

REST (Representational State Transfer) adalah arsitektur web yang menggunakan protokol HTTP untuk pertukaran data. Konsep ini diperkenalkan oleh Roy Thomas Fielding pada tahun 2000. API (Application Programming Interface) yang memenuhi standar yang ditentukan oleh gaya arsitektur REST disebut dengan RESTful API.

Node JS adalah platform runtime JavaScript yang sangat populer dalam pengembangan web dan Web API. Dengan menggunakan Node JS kita dapat menjalankan kode JavaScript di sisi server seperti php, ruby, perl, dan bahasa program lainnya yang dikembangkan pada sisi server.

Ada berbagai framework di Node JS yang dapat digunakan untuk membuat RESTful API, salah satunya adalah Hapi JS. Hapi (kependekan dari HTTP-API) merupakan open source framework Node JS yang memiliki slogan “build powerful, scalable applications, with minimal overhead and full out-of-the-box functionality — your code, your way”. Pada awalnya Hapi dikembangkan oleh team mobile di Walmart Labs, untuk menangani traffic pada acara Black Friday. Namun sekarang, Hapi telah digunakan oleh banyak perusahaan seperti Beats Music, Vrbo, Brave, dan AuthO.

Pada tutorial ini, kita akan membahas cara menggunakan framework Hapi JS untuk membangun web service dengan mudah dan cepat.

Membuat project Node JS dan menginstall Hapi JS.

Silakan buat direktori atau folder baru. Setelah itu buka folder tersebut menggukanan VSCode, atau jalankan perintah berikut:

mkdir hapi-rest-api
cd hapi-rest-api
code .
  • mkdir : perintah untuk membuat folder atau direktori baru.
  • cd : perintah untuk pindah direktori.
  • code . : perintah untuk membuka direktori menggunakan code editor (VSCode).

Kemudian buka terminal dan jalankan perintah berikut:

npm init --y

Perintah diatas menginstruksikan NPM untuk menggunakan nilai default untuk semua opsi yang di minta package.json. Pastikan terdapat file package.json pada folder project.

Install hapi dengan menjalankan kode berikut:

npm install @hapi/hapi

Tunggu hingga proses instalasinya selesai. Jika proses sudah selesai, dependencies hapi akan otomatis ditambahkan. Pastikan dependencies hapi sudah tersedia pada package.json.

Mulai membuat Web Service

Selanjutnya buatlah file javascript baru dengan nama file server.js. File tersebut menjadi file utama atau entry point dalam aplikasi yang akan dibuat.

Silakan ketik kode berikut pada file server.js:

"use strict";

const Hapi = require("@hapi/hapi");

Pada code diatas terdapat “use strict” yang membuat javascript mengeksekusi kode dalam mode strict, contohnya : melarang penggunaan variabel yang belum dideklarasikan sebelumnya. Pada baris selanjutnya dilakukan import modul Hapi dari package “@hapi/hapi”.

Masih pada file yang sama, ketikkan kode berikut:

const init = async () => {
const server = Hapi.server({
port: 3000,
host: "localhost",
});

await server.start();
console.log(`Server started on: ${server.info.uri}`);
};

init();

Fungsi async yang memuat logika server dan route di definisikan pada variabel init. Objek server merupakan fokus utama pada aplikasi ini. Konfigurasi server ditentukan melalui properti pada objek server, termasuk port dan host yang diatur pada port 3000 dan host "localhost". Setelah konfigurasi selesai, server dapat dimulai dengan memanggil server.start(). Informasi lebih detail mengenai penggunaan server dapat ditemukan pada dokumentasi resmi Hapi.

Menambahkan Basic Route

Selanjutnya kita tambahkan basic route. Untuk membuat route, hapi memiliki struktur server.route({METHOD, PATH, HANDLER}). Method, path, dan handler akan diteruskan ke server hapi sebagai sebuah objek.

Ketikkan kode berikut di dalam function init tepat setelah inisialisasi server:

  server.route({
method: "GET",
path: "/",
handler: (request, h) => {
return "Hello World !";
},
});

method menentukan metode HTTP yang digunakan pada route ini, dalam kasus ini adalah “GET”. path menentukan URL pada endpoint, dalam kasus ini “/” yang menandakan root direktori. Kemudian terdapat handler yang merupakan fungsi yang akan dipanggil ketika ada permintaan ke endpoint ini. Fungsi ini memiliki dua parameter yaitu request yang berisi informasi tentang permintaan HTTP, dan h yang merupakan objek respons yang digunakan untuk memberikan respons ke client. Pada contoh ini, fungsi handler akan mengembalikan sebuah string “Hello World!” yang akan dikirim ke client sebagai respons.

Handling Error

Untuk menangani error pada aplikasi, kita tambahkan kode berikut:

process.on("unhandledRejection", (err) => {
console.log(err);
process.exit(1);
});

Event “unhandledRejection” digunakan untuk menangani error pada proses async yang belum di-handle secara eksplisit dengan blok try-catch. Ketika terjadi error yang belum di-handle pada proses async, maka akan menampilkan error message pada console log menggunakan console.log(err) dan kemudian akan keluar dari proses aplikasi dengan memanggil process.exit(1).

Berikut adalah keseluruhan kode:

Menjalankan Aplikasi

Jalankan aplikasi dengan perintah berikut:

node server.js

Tampilan console akan seperti berikut:

Untuk memastikan aplikasi berjalan lancar, bukalah browser dan ketikkan http://localhost:3000/ pada address bar, tekan enter. Halaman browser akan menampilkan pesan “Hello World!”

screenshot http://localhost:3000/

Selamat !!! dengan demikian kamu sudah berhasil membuat web service menggunakan Hapi JS !

Sumber :
https://hapi.dev/tutorials/gettingstarted/?lang=en_US
https://hapi.dev/api/?v=21.3.0#server

Silakan kunjungi repositori Github untuk melihat seluruh kode yang telah dibahas dalam artikel ini.

Ingin mengetahui lebih banyak? Jangan lewatkan artikel selanjutnya yang akan membahas topik Menarik tentang Menerapkan Plugin dan Routing Pada Aplikasi Hapi JS.

--

--