Membuat REST API  di  NodeJS

 

Apa itu REST API? Di sana terdapat dua kata yaitu REST dan API. REST(REpresentational State Transfer) adalah desain arsitektur yang menyediakan standar cara berkomunikasi antar sistem komputer di dalam web sehingga komunikasi antar komputer menjadi lebih mudah, seperti itu sederhanannya. Sedangkan untuk API(Application Programming Interface) sebenarnya hanya fungsi atau method, ketika kalian membuat fungsi atau method di bahasa pemrograman apapun itu sudah bisa disebut API.


Jadi apa itu REST API? Yap, REST API adalah API yang cara mengimplementasikannya menggunakan konsep REST. Simpelnya seperti ini, biasanya untuk mengimplementasikan suatu API kita hanya tinggal menulis nama fungsi atau method-nya saja, sedangkan jika menggunakan konsep REST, kita harus melakukannya menggunakan HTTP Request.

 

Tujuannya untuk menjadikan system dengan performa yang baik, cepat, dan mudah untuk dikembangkan (scale) terutama dalam pertukaran dan komunikasi data.

Kenapa perlu membuat RESTful  API?
Jika Anda perhatikan arsitektur tradisional komunikasi data antara client dan server terlihat seperti gambar berikut:


Dimana client mengirimkan request ke server melalui HTTP Request, dan server memberikan response melalui HTTP Response. Response yang diberikan oleh server, biasanya berformat HTML.
Nah, bayangkan jika Anda harus mengembangkan website Anda ke aplikasi Mobile seperti Android atau iOS. Anda tahu aplikasi Android ataupun iOS tidak membutuhkan HTML sebagai response dari server.
Karena Android dan iOS menggunakan bahasa pemrograman yang berbeda dan tidak mengenal HTML.
Oleh sebab itu, kita perlu membuat RESTful API. RESTful API ini akan menjadi jembatan komunikasi data antara client dan server. Sehingga, server tidak lagi mengirimkan HTML sebagai response, melainkan hanya data. Ya, hanya data. Hal inilah yang dapat menghemat bandwidth server.
Response dalam bentuk data inilah yang dapat digunakan untuk berbagai macam platform dari aplikasi yang berbeda bahasa permrograman. Response dalam bentuk data ini, biasanya berformat JSON atau XML. Akan tetapi, yang paling umum digunakan adalah JSON.
pada ulasan kali ini akan membahasa megenai pembuatan Rest API dengan menggunakan :
·         NodeJS
·         Mysql native driver untuk nodejs
·         Express
Web services yang akan dibuat pada ulasan ini memanipulasi data “note” atau catatan. Sebuah catatan memiliki isi dari note dan juga tanggal pembuatan dari catatan tersebut. Fungsi yang akan dicakup adalah :
1.      Menambahkan note baru dengan menggunakan http post
2.      Mengubah note yang sudah ada dengan menggunakan http put
3.      Menghapus note yang telah ada dengan menggunakan http delete
4.      Melihat note dengan menggunakan http get
Untuk memperjelas maka dibawah ini adalah struktur tabel (sql) dari note.
1. Membuat project node

2. Install module

module yang dibutuhkan dan lakukan inisialisasi pada app.js (tergantung konfigurasi npm init anda). Berikut ini adalah modul-modul yang dibutuhkan :
·         Express, untuk menghandle routing & http agar dapat menjadi sebuah web services.
·         Mysql, sebagai database yang digunakan untuk menyimpan data note
·         Bodyparser, web services yang dibuat akan menerima data(request body) berupa JSON dan output berupa JSON.
·         Express-validator, membantu memvalidasi(cek apakah kosong, dsb) request body / data http.

3.  Setting mysql dan melakukan koneksi ke database

Yang perlu didefinisikan adalah autentikasi mysql (host, user, password dan database) seperti pada umumnya. Kemudian , panggil fungsi connect pada instances connection untuk menyambungkan ke mysql. Fungsi connect memiliki sebuah callback error yang dapat digunakan sebagai kondisi saat node gagal melakukan koneksi ke mysql.

4 . Membuat  “note” router module

fungsi file ini adalah untuk mendefinisikan rules atau aturan dari router. Sql query akan dieksekusi melalui router module dari express ini. Sehingga controller dan model bercampur menjadi satu file.
Fungsi query pada instances connection yang kita berikan(pass) dari router ke router module(untuk penjelasan lihat langkah ke-4) memiliki tiga buah callback yaitu :
1.      err -> callback yang berisi informasi mengenai error, misalnya terjadi sql query maka informasi error akan tersimpan pada callback ini
2.      fields -> callback yang menginformasikan apakah ada respon dari database mysql. Sejauh yang saya tahu fields akan kosong ketika tidak terdapat data yang dihasilkan oleh sql query. Sehingga cocok untuk menfilter apakah query tersebut match dengan data yang ada atau tidak.
3.      result -> hasil dari sql query akan disimpan disini.

5. Menghubungkan Router module dengan router

Selain menghubungkan routermodule dengan router, yang dilakukan di sini adalah menginjeksi note routermodule dengan instances connection yang kita panggil pada app.js Tujuannya adalah agar instances connection ini dapat digunakan bersama-sama dimodul tanpa pada setiap modul memanggil kembali/membuat instances kembali. Instances connection inilah yang digunakan untuk melakukan sql query.


 

Referensi