Hapi adalah sebuah framework yang ditulis dalam bahasa javascript. Hapi dijalankan dengan menggunakan nodeJS. Fungsi dari hapi adalah untuk mambangun aplikasi dan services layaknya yang dilakukan oleh express. Umumnya hapi digunakan untuk membangun suatu web services atau RESTful API (Application programming interfaces).
Pada ulasan ini akan dibahas mengenai :
- Karakteristik Hapi vs Express berdasarkan literatur di internet.
- Installasi Hapi
- Basic routing pada Hapi
- Hello world
ketiga hal diatas akan diulas secara basic atau dasar. Sehingga kita dapat membangun rangka awal dari suatu web services. Namun pada bagian awal akan dibahas terlebih dahulu mengenai perbandingan antara express dan hapi berdasarkan literatur karena kami bukan expert dalam dua framework tersebut.
Karakteristik Hapi vs express
berikut adalah karakteristik antara hapi dan express
Express | Hapi |
merupakan framework yang lebih populer dibandingkan dengan express dari sisi dokumentasi, star pada github dan lain-lain | tidak lebih populer dibandingkan dengan express. |
dokumentasi dan tutorial express lebih banyak. | dokumentasi dan tutorial mengenai hapi lebih sedikit. |
sistem autentikasi (auth) pada express tidak tersedia secara built in. kita harus menggunakan library lainnya. Misalkan passport dan lain-lain. | sedangkan pada hapi, authentikasi (auth) tersedia secara built in. Sehingga kita tidak perlu menggunakan library external dari hapi. |
test coverage pada modul-modul di express tidak mencapai 100%. | Semua modul pada hapi 100% telah mencapai test coverage. |
berdasarkan sedikit komparasi diatas anda dapat menentukan apakah ingin mempelajari hapi atau tidak. Yang jelas untuk mengetahui perbandingan secara nyata maka kita perlu mempelajari keduannya dengan cara mencobannya langsung(terjun menyelami lebih dalam).
Installasi Hapi
terdapat beberapa langkah untuk memulai sebuah project dengna menggunakan hapi dan NodeJS.
1. menginisiasi project node js
npm init
setelah menjalankan perintah diatas, maka isi konfigurasi dari npm sesuai dengan project anda atau secara sederhana biarkan semua konfigurasi diatas secara default(tekan enter seluruh pertanyaan yang muncul pada command line) maka akan mengenerate package.json secara default.
{ "name": "hapi-lab", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC", "dependencies": { "hapi": "^16.2.0" } }
2. install hapi pada project
perintah yang digunakan adalah
npm install hapi --save
maka hapi telah terinstall pada project.
3. Membuat instances dan konfigurasi hapi
untuk menginisiasi hapi maka kita perlu memanggil hapi(require) dan membuat sebuah instances baru. Setelah itu lakukan konfigurasi untuk http yang akan dibuat.
// memanggil package hapi var hapi = require('hapi'); // membuat server dan mengkonfigurasi http var hapiServer = new hapi.Server(); hapiServer.connection({ host : 'localhost', port : '7728' });
3.1. Membuat route http get default untuk path “/”
karena ini adalah ulasan mengenai basic installation maka diperlukan route default untuk menunjukan bahwa hapi telah berhasil berjalan pada local machine.
// membuat route basic ke path "/" dengan http gt hapiServer.route({ method : 'GET', path : '/', handler : function(req, res){ return res("hello world"); } })
3.2 menjalankan server hapi
hapi akan berjalan sesuai dengan konfigurasi yang telah kita definisikan
hapiServer.start( (error) => { console.log('Hapi berjalan ..... pada port : ' + hapiServer.info.port); } )
jalankan dengan perintah
node index.js
maka jika kita akses pada browser.
Routing basic
syntax yang digunakan untuk membuat sebuah route adalah dibawah ini.
// membuat route basic ke path "/" dengan http gt hapiServer.route({ method : 'GET', path : '/pegawai', handler : function(req, res){ return res("isi respon"); } })
kode diatas memiliki tiga buah metadata yang perlu untuk didefinisikan yaitu
- Method
Http method yang diakan digunakan mengakses endpoint atau path. Http method ini seperti layaknya http method pada umumnya yakni : Get, Post, Put atau Delete. Get biasannya digunakan untuk menampilkan data , post digunakan untuk menambahkan data, put digunakan untuk mengubah data(pada database) dan delete digunakan untuk menghapus data(pada database). - Path
endpoint dari web services. Contohnya yang telah kita buat diatas adalah endpoint “/” atau pada index dari web services. - Handler
handler adalah metadata yang berguna untuk menangkap respon dari user serta memberikan feedback / respon untuk user dari server. Sehingga fungsi defaultnya adalah sebuah callback function dengan dua parameter request dan reply atau pada express biasannya kita kenal dengan request(req) dan response(res). Gunakan istilah yang biasa anda gunakan