Pemrograman Web Framework (PMI 1412) - Membuat REST API di Node.Js

Membuat REST API di Node.Js



Node.js adalah platform perangkat lunak pada sisi peladen dan aplikasi jaringan. Ditulis dengan bahasa JavaScript dan dijalankan pada Windows, Mac OS X, dan Linux tanpa perubahan kode program. Node.js memiliki pustaka peladen HTTP sendiri sehingga memungkinkan untuk menjalankan peladen web tanpa menggunakan program peladen web seperti Apache atau Lighttpd.

Node.js pertama kali diciptakan dan diperkenalkan untuk pengguna pada sistem Linux pada tahun 2009. Node.js dikembangkan oleh Ryan Dahl dan disponsori oleh Joyent, perusahaan tempat ia bekerja.(wikipedia.org)

Pengertian REST

REST (REpresentational State Transfer) merupakan standar arsitektur komunikasi berbasis web yang sering diterapkan dalam pengembangan layanan berbasis web. Umumnya menggunakan HTTP (Hypertext Transfer Protocol) sebagai protocol untuk komunikasi data. REST pertama kali diperkenalkan oleh Roy Fielding pada tahun 2000.
Pada arsitektur REST, REST server menyediakan resources (sumber daya/data) dan REST client mengakses dan menampilkan resource tersebut untuk penggunaan selanjutnya. Setiap resource diidentifikasi oleh URIs (Universal Resource Identifiers) atau global ID. Resource tersebut direpresentasikan dalam bentuk format teks, JSON atau XML. Pada umumnya formatnya menggunakan JSON dan XML.

Pengertian API

API adalah singkatan dari Application Programming Interface. Merupakan suatu “penghubung” yang memungkinkan suatu aplikasi untuk berinteraksi dengan aplikasi lainnya dan berbagi data.

RESTful API merupakan implementasi dari API. RESTful itu protokol/aturan untuk melakukan REST. Jadi RESTful itu udah pasti REST, namun REST belum tentu bisa disebut RESTful. Walaupun terlihat sama tetapi mereka berbeda.


Langkah-langkah cara membuat RESTful API pada nodeJS

1. Langkah pertama yaitu tentunya kita harus mempunyai nodeJS. bagi kalian yang belum download nodeJS silahkan download disini.
2. Langkah kedua, kita membuat design RESTful API. disini kita akan membuat restful api untuk  mengambil data dari server(GET), membuat data baru ke server(POST), mengupdate data ke server(PUT) dan menghapus data ke server(DELETE) dari suatu database yaitu table product.
3. Selanjuntnya kita membuat database dan table yang akan kita gunakan, disini kita akan membuat database dengan nama restful_db. Cara membuatnya yaitu:
Membuat database dan tabel :
CREATE DATABASE restful_db;

CREATE TABLE product(
product_id INT(11) PRIMARY KEY AUTO_INCREMENT,
product_name VARCHAR(200),
product_price INT(11)
)ENGINE=INNODB;

Masukkan data ke tabel sebagai contoh
INSERT INTO product(product_name,product_price) VALUES
('Product 1','2000'),
('Product 2','5000'),
('Product 3','4000'),
('Product 4','6000'),
('Product 5','7000');

4. Menginstall Depedencies, sebelum menginstall dependencies, silahkan buat sebuah folder, disini saya membuat sebuah folder dengan nama restful-api.


Dalam hal ini kita membutuhkan 3 dependencies yaitu:
- Express (node.js framework)
- MySQL (driver mysql untuk node.js)
- 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.
Akan tetapi, pada tutorial kali ini saya tidak menggunakan Command Prompt, melainkan menggunakan Git Bash Terminal.
Jika belum memiliki aplikasi tersebut,dapat mendwonload di : https://git-scm.com/downloads Jika Anda telah menginstall Git Bash, silahkan buka folder restful-api yang telah dibuat sebelumnya.
Kemudian klik-kanan lalu pilih Gitbash Here.


Untuk membuat package.json kita ketikkan syntax :


Perintah diatas akan membuat sebuah file bernama package.json secara otomatis pada project Anda.
Kemudian Install semua dependencies yang dibutuhkan dengan mengetikkan perintah berikut :


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

Jika di buka file package.json, maka akan terlihat seperti berikut :

{
  "name": "restful-api",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo "Error: no test specified" && exit 1"
  },
  "author": "Ahmad Shobirin",
  "license": "ISC",
  "dependencies": {
    "body-parser": "^1.18.3",
    "express": "^4.16.4",
    "mysql": "^2.16.0"
  }
}

5. Kemudian buat file dengan nama index.js dalam folder restful-api. Lalu ketikkan syntax seperti 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...');
});

6. Kemudian kita tes koneksi yang telah kita buat untuk memastikan RESTful API berjalan dengan baik. Disini kita menggunakan POSTMAN untuk menguji API yang telah kita buat.
Jika Anda belom meiliki aplikasi teersebut, dapat mendownload POSTMAN di official websitenya: https://www.getpostman.com/ Download dan Install POSTMAN di komputer Anda kemudian jalankan.

7. Jalankan project dengan perintah :


Jika hasil seperti diatas,maka koneksi berhasil.

8.Untuk Get All Product (GET)
Kembali ke POSTMAN, dan ketikan URL berikut pada kolom URL Postman:
http://localhost:3000/api/products
Pilih method GET, kemudian klik tombol Send, maka Akan terlihat hasilnya seperti gambar berikut:



Pada gambar diatas dapat dilihat bahwa EndPoint untuk mendapatkan semua data product berjalan dengan baik.

9. Get Single Product (GET)
Ketikan URL berikut pada kolom URL untuk mendapatkan single product:
http://localhost:3000/api/products/2

Pilih dengan method GET, kemudian klik tombol Send, maka Akan terlihat hasilnya seperti gambar berikut:


Pada gambar diatas dapat terlihat hanya satu data product yang ditampilkan, yaitu product dengan product_id=’2’ sesuai dengan parameter pada URL.

10. Create New Product (POST)
Ketikan URL berikut pada kolom URL untuk meng-create new product:
http://localhost:3000/api/products

Pilih method POST, kemudian masukan data berikut pada kolom JSON(application/json):
Kemudian klik tombol Send, maka Akan terlihat hasilnya seperti gambar berikut:

Jika Anda perhatikan pada bagian response, terdapat “affectedRows”: 1, dan “insertId”: 6.
Itu berarti terdapat satu data yang diinsert ke database dengan product_id=’6’.

11. Update Product (PUT)
Ketikan URL berikut pada kolom URL untuk meng-update product:
http://localhost:3000/api/products/2


Pilih method PUT, kemudian masukan data berikut pada kolom JSON(application/json):
Kemudian klik tombol Send, maka Akan terlihat hasilnya seperti gambar berikut:


Jika Anda perhatikan pada bagian response, terdapat “affectedRows”: 1, dan “changedRows”: 1.
Itu berarti terdapat satu data yang diupdate ke database dengan product_id=’2’ sesuai dengan parameter pada URL.

12. Delete Product (DELETE)
Ketikan URL berikut pada kolom URL untuk meng-hapus product:
http://localhost:3000/api/products/6

Pilih dengan method DELETE, kemudian klik tombol Send, maka Akan terlihat hasilnya seperti gambar berikut:

Jika Anda perhatikan pada bagian response, terdapat “affectedRows”: 1, “insertId”: 0 ,dan “changedRows”: 0.
Itu berarti terdapat satu data yang dihapus (delete) ke database dengan product_id=’6’ sesuai dengan parameter pada URL.


Referensi :
http://mfikri.com/artikel/restful-api
https://www.galihlprakoso.com/2019/04/apa-itu-rest-ful-api-pengertian-penjelasan.html
https://medium.com/@cecepahmadfauzi93/rest-rest-api-dan-client-server-527a15e68ff2





Komentar