Skip to main content

MEMBUAT RESTFUL API DENGAN NODEJS


RESTFUL API
REST(Representational State Transfer) merupakan sebuah standarisasi suatu arsitektur dalam pengembangan suatu webREST berguna untuk komunikasi/interaksi antar data melalui protokol http atau https.
REST Sendiri terbagi menjadi 2 komponen yaitu REST Server dan Rest Client, dimana Rest server berguna untuk melayani sebuah permintaan data melalui http request sedangkan REST client meminta data atau resource kepada server.
Penggunaan REST bersamaan dengan API(apllication Programming Language), dimana API berguna sebagai penghubung data. Penggabungan REST dan API di sebut webserive, dimana dengan adanya web service maka sistem yang ingin menggunakan tidak langsung mengambil data dari basis data,sehingga sistem berjalan dengan cepat dan ringan.  Representasi REST API dalam bentuk notasi json dan XML, dimana data-data yang terlihat dalam bentuk suatu objek dan array. 
REST ini diperkenalkan oleh Roy Fielding pada tahun 2000. Lalu API itu artinya Application Protocol Interface dimana adalah kumpulan dari subroutine definitions, protocol dan juga tools untuk berkomunikasi data antar aplikasi software.
REST API mempunyai beberapa metode sebagai suatu interkasi. Interkasi suatu data menggunakan sautu URL yang di ijinkan. Di bawah ini beberapa methode http request yang sering digunakan.
  1. GET, berfungsi untuk mengambil resurce atau data, baik single maupun multi data.
  2. POST, berfungsi untuk mengirimkan data resource baru.
  3. PUT, berfungsi untuk memperbarui data.
  4. DELETE, berfungsi untuk menghapus data resource.
  5. OPTIONS, berfungsi untuk operasi yang mendukung suatu data resource.
Di bawah ini merupakan Komponen Http Request
  1. Status/Response Code, merupakan sebuah kode status ketika terjadi interaksi. Status berupa sebuah angka, dimana angka tersebut mempunyai sebuah tujuan.
  2. Http Version, digunakan untuk menunjukan versi http request.
  3. Response Header, merupakan sebuah meta data terhadap data yang terurai.
  4. Response Body, merupakan data konten atau sumber data yang diinginkan.
Komponen dari HTTP response:
1.      Response Code, status server terhadap request yang diminta seperti 200, 401, 404 dan lainnya.
2.      HTTP Version
3.      Response Header yang berisi meta data seperti contect type, cache tag dan yang lainnya.
4.      Repsonse Body, data/resource yang diberikan oleh server baik itu berupa text, json ataupun xml
Cara Kerja REST API
Pertama harus ada sebuah REST server yang akan menyediakan resource/data. Sebuah REST client akan membuat HTTP request ke server melalui sebuah global ID atau URIs dan server akan merespon dengan mengirimkan balik sebuah HTTP response sesuai yang diminta client.

Penggunaan REST API tidak menggunakan penanda suatu data yang diakses, sebagai contoh penggunaan session yang berfungsi sebagai login ke dalam sistem yang diminta. Keamanan data pada REST API menggunakan JSON Web Token, dimana setiap terjadi interaksi data harus menggunakan token yang sesuai. Token yang dihasilkan dapat berupa angka maupun huruf. Identifikasi suatu token mempunyai waktu batas akses tertentu. Ketika data sumber daya bersifat rahasia harus menggunakan JWT , namun ketika data sumber data bersifat umum tidak perlu menggunakan JWT.

Keuntungan REST API

  1. Hasil keluaran berapa data simpel yang teruarai beruta notasi objek.
  2. Hasil keluaran mudah dipahami, karena data yang di tampilkan cukup jelas.
  3. Pelayanan data dilakukan sesuai permintaan dengan akses masing-masing.
  4. Berjalan dengan cepat dan ringan.
  5. Mendukung interaksi dengan basis data.

Kelemahan REST API

  1. Membutuhkan Informasi tambahan yang jelas, misalnya URL yang di pake, methode yang dipakai.
  2. Keamanan data kurang terjamin, karena tidak ada suatu standarisai keamanan data.
  3. Penggunaan Meta data setiap platform pengambilan data berbeda-beda.
  4. Tidak ada pesan yang menujukan informasi secara rinc



Cara Membuat RESTful API dengan Node.js
1.        Design RESTful API
Sebelum membuat RESTful API, ada baiknya di kita definisikan dulu EndPoint dari RESTful API.
EndPoint merupakan routes dari API yang akan kita buat.
2.        Buat Database dan Table
Buat sebuah database baru dengan MySQL, anda dapat menggunakan tools seperti SQLyog, PHPMyAdmin atau sejenisnya. Jika Anda membuat database dengan nama yang sama itu lebih baik.
3.        Install Dependencies
Sebelum menginstall dependencies, silahkan buat sebuah folder, disini saya membuat sebuah folder dengan nama restful-api.
Dimana folder restful-api ini akan menjadi folder project kita pada tutorial kali ini.
Mari kita lanjut, Pada tutorial kali ini, kita membutuhkan 3 dependencies yaitu:
1. Express (node.js framework)
2. MySQL (driver mysql untuk node.js)
3. Body-parser (middleware untuk menghandle post body request)
Untuk menginstall dependencies pada node.js dapat dilakukan dengan mudah menggunakan NPM (Node Package Manager).
Anda dapat menjalankan NPM pada Terminal atau Command Prompt.
Sebelum menginstall dependencies, kita perlu membuat package.json.
Untuk membuat package.json, anda dapat menjalankan perintah berikut pada terminal.
npm init




Install semua dependencies yang dibutuhkan dengan mengetikkan perintah berikut pada terminal:

npm install --save express mysql body-parser

Perintah diatas akan menginstall semua dependencies yang kita butuhkan yaitu: express, mysql, dan body-parser.

4. Buat file Index.js

Ketikkan kode berikut:

const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const mysql = require('mysql');

// parse application/json
app.use(bodyParser.json());

//create database connection
const conn = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  password: '',
  database: 'restful_db'
});

//connect to database
conn.connect((err) =>{
  if(err) throw err;
  console.log('Mysql Connected...');
});

//tampilkan semua data product
app.get('/api/products',(req, res) => {
  let sql = "SELECT * FROM product";
  let query = conn.query(sql, (err, results) => {
    if(err) throw err;
    res.send(JSON.stringify({"status": 200, "error": null, "response": results}));
  });
});

//tampilkan data product berdasarkan id
app.get('/api/products/:id',(req, res) => {
  let sql = "SELECT * FROM product WHERE product_id="+req.params.id;
  let query = conn.query(sql, (err, results) => {
    if(err) throw err;
    res.send(JSON.stringify({"status": 200, "error": null, "response": results}));
  });
});

//Tambahkan data product baru
app.post('/api/products',(req, res) => {
  let data = {product_name: req.body.product_name, product_price:
  req.body.product_price};
  let sql = "INSERT INTO product SET ?";
  let query = conn.query(sql, data,(err, results) => {
    if(err) throw err;
    res.send(JSON.stringify({"status": 200, "error": null, "response": results}));
  });
});

//Edit data product berdasarkan id
app.put('/api/products/:id',(req, res) => {
  let sql = "UPDATE product SET product_name='"+req.body.product_name+"', product_price='"+req.body.product_price+"' WHERE product_id="+req.params.id;
  let query = conn.query(sql, (err, results) => {
    if(err) throw err;
    res.send(JSON.stringify({"status": 200, "error": null, "response": results}));
  });
});

//Delete data product berdasarkan id
app.delete('/api/products/:id',(req, res) => {
  let sql = "DELETE FROM product WHERE product_id="+req.params.id+"";
  let query = conn.query(sql, (err, results) => {
    if(err) throw err;
      res.send(JSON.stringify({"status": 200, "error": null, "response": results}));
  });
});

//Server listening
app.listen(3000,() =>{
  console.log('Server started on port 3000...');
});
5.  Testing


Uji coba API yang telah kita buat untuk memastikan RESTful API berjalan dengan baik.
Untuk menguji API, ada banyak tools yang dapat digunakan.
Pada tutorial ini, saya menggunakan POSTMAN untuk menguji API yang telah kita buat.
Running project dengan mengetikan perintah di terminal:
node index
Uji Coba Metode HTTP
1.      Get All (GET)
Ketikan URL database pada kolom URL Postman Pilih method GET, kemudian klik tombol Send.
2.      Get Single (GET)
ketikan URL database pada kolom URL Postman. Pilih method GET, kemudian klik tombol Send.
3.      Create New (POST)
ketikan URL database pada kolom URL Postman. Pilih method POST, kemudian klik tombol Send.
4.      Update  (PUT)
ketikan URL database pada kolom URL Postman. Pilih method PUT, kemudian klik tombol Send.
5.      Delete (DELETE)
ketikan URL database pada kolom URL Postman. Pilih method DELETE, kemudian klik tombol Send.



Referensi : 

Comments