lifelong learner — urip iku urup, currently working on accenture.

RESTful web service dengan express dan mongodb part 1/2

0
Degananda.com -

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 :

  1. GET -> menampilkan seluruh data note
  2. POST -> menambahkan data note
  3. PUT/:id -> mengubah data note
  4. DELETE/:id -> menghapus data note
  5. 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
  1. Body parser
  2. Http basic auth (keamanan).
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).

  1. express digunakan sebagai web framework (menghandle http request)
  2. body parser digunakan agar kita dapat mendapatkan nilai http request body yang berupa input client/user
  3. var appPort = process.env.port || 7250 , port yang digunakan untuk menjalankan aplikasi nodejs (express)
  4. app.use(bodyParser.json()) , request body yang kita terima adalah JSON (lightweight dan banyak digunakan).
  5. var dbConnect , global variable untuk mendapatkan instances database saat mongodb telah terkoneksi agar nantinnya dapat digunakan pada fungsi lainnya.
  6. var noteCollection global variable untuk mendapatkan instances dari colleciton “note” agar dapat digunakan pada endpoint (get/post/put/delete).
  7. var docId = new mongo.ObjectID(req.params.id) , mengkonversi parameter dari endpoint(req.params.id) menjadi objectID mongodb.
  8. this.noteCollection.insert , perintah mongodb untuk menambahkan dokumen pada collection
  9. 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.