Pada ulasan ini akan membahas pembuatan RESTful web services dengan menggunakan nodejs. Library utama yang digunakan adalah express dan mongodb native driver. Mengapa menggunakan mongodb native driver padahal lebih sedikit susah jika dibandingkan dengan mongoose ? karena mongodb native driver memiliki performa yang jauh lebih cepat dibandingkan dengan mongoose. Selain itu, mongoose memiliki learning curve yang lebih besar jika dibandingkan dengan mongodb native driver.
RESTful Web services yang akan kita buat akan mengambil kasus mengenai aplikasi pengelola note atau catatan. Secara garis besar web services ini akan mengakomodasi mengenai manipulasi dokumen note.Web services yang akan dibuat akan memiliki lima buah endpoint yakni :
- GET -> menampilkan seluruh data note
- POST -> menambahkan data note
- PUT/:id -> mengubah data note
- DELETE/:id -> menghapus data note
- GET/:id -> menampilkan data note berdasarkan id tertentu.
Web services ini akan dibangun dengan menggunakan NodeJS dan Express serta beberapa modul – modul pendukung untuk keperluan parsing dan basic security / keamanan. Dengan menambahkan basic modul(http basic auth) mengenai keamanan web services yang dihasilkan dari tutorial ini dapat digunakan untu keperluan project dengan skala kecil. Namun jika ingin menggunakan untuk project yang berskala medium hingga enterprise harus melakukan konfigurasi keamanan yang lebih.
Dalam membuat webservices tentunnya kita harus membuatnya sesuai dengan lingkungan di sistem operasi yang ada / arsitektur teknologi. Maka, spesifikasi web services yang akan digunakan yaitu :
Bahasa | Javascript V8 |
Engine | NodeJS versi 6.9.2 |
Database framework | Mongodb native driver |
Database | Mongodb |
Format pertukaran data | JSON |
Modul pendukung |
|
Web framework + support | Express, Express validator |
Deploy | Nodemon & Forever |
Tutorial kali ini menggunakan express sebagai web framework. Namun jangan kuatir setelah tutorial ini akan dibuat untuk versi Hapi. Format pertukaran data yang digunakan adalah json dikarenakan json sangat ringan dan populer. Karena populer maka banyak sekali orang yang menggunakan sehingga sangat mudah untuk menemukan dokumentasi / penjelasan dan mudah dalam menghire orang yang dapat membantu pengerjaan project dengan json.
Untuk melakukan validasi terhadap konten yang diberikan kepada web services(http request) maka kami menggunakan body parser dan express validator untuk membatasi konten-konten yang dapat dimasukan pada http request body. Hal ini untuk mencegah hal-hal yang tidak di inginkan. Misalnya kesalahan input data ataupun percobaan hacking/cracking. Http basic auth digunakan sebagai standar basic keamanan dari web services. Nodemon digunakan sebagai tools untuk melakukan kompile terhadap file nodejs ketika terjadi perubahan sehingga kita tidak melakukannya secara manual. Jika anda ingin mendeploy web services yang nantinnya dibuat ini maka dapat menggunakan tools forever(sangat ringan dan mudah digunakan).
Lets Code
pembuatan web services ini akan dibagi menjadi dua part. Pada bagian pertama akan membahas mengenai pembuatan RESTful API itu sendiri. Sementara pada bagian dua akan membahas untuk “kosmetik” dari web services itu sendiri. Contohnya mengenai masalah keamanan[1], membuat web services secara modular(express)[2], validasi[3], serta uji coba[4].
1. install beberapa modul yang dibutuhakan
Express
npm install express --save
mongodb native driver untuk nodejs
npm install mongo --save
body parser untuk menangkan http request body.
npm install body-parser --save
2. Jalankan mongodb dan cek port yang digunakan
untuk mengecek port mongodb yang sedang berjalan pada local machine kita perintah yang digunakan adalah
sudo lsof -iTCP -sTCP:LISTEN | grep mongo
port dan alamat uri tersebut akan digunakan saat mengkonfigurasi mongodb native.
3. buat database
perintah yang digunakan adalah
use "nama_database_anda"
gunakan nama database yang anda inginkan pada kasus ini nama database yang digunakan adalah “degananda”.
4. Buat endpoint dan menghubungkan ke db
berikut ini adalah fullcode dari web services yang dibuat dengan menggunakan express dan mongodb secara sederhana. Penjelasan line by line ada dibawah source code.
berikut ini adalah penjelasan line by line dari kode diatas (sangat simpel).
- express digunakan sebagai web framework (menghandle http request)
- body parser digunakan agar kita dapat mendapatkan nilai http request body yang berupa input client/user
- var appPort = process.env.port || 7250 , port yang digunakan untuk menjalankan aplikasi nodejs (express)
- app.use(bodyParser.json()) , request body yang kita terima adalah JSON (lightweight dan banyak digunakan).
- var dbConnect , global variable untuk mendapatkan instances database saat mongodb telah terkoneksi agar nantinnya dapat digunakan pada fungsi lainnya.
- var noteCollection global variable untuk mendapatkan instances dari colleciton “note” agar dapat digunakan pada endpoint (get/post/put/delete).
- var docId = new mongo.ObjectID(req.params.id) , mengkonversi parameter dari endpoint(req.params.id) menjadi objectID mongodb.
- this.noteCollection.insert , perintah mongodb untuk menambahkan dokumen pada collection
- this.noteCollection.find({}).toArray() , digunakan mengkonversi response dari find() menjadi bentuk array / object. Memiliki dua callback yakni error dan dokumen itu sendiri. Dapat langsung dimasukan pada res.json()
done itulah pembuatan web services dengan menggunakan express dan mongodb native driver secara sangat sederhana. pada bagian dua nanti akan “dipercantik” web services tersebut.