Dapatkan diskon 75% paket hosting + gratis domain + gratis SSL + extra diskon 5% dengan kupon: MFIKRI

Order Sekarang.!

5 Langkah Membuat RESTful API menggunakan Node.js dan MySQL

5 Langkah Membuat RESTful API menggunakan Node.js dan MySQL

Pernahkah Anda bertanya:

Bagaimana membuat aplikasi atau website dengan performa yang baik?

Bagaimana membuat website yang mudah dikembangkan di berbagai platform?

Bagaimana mengintegrasikan website dengan aplikasi yang berbeda bahasa pemrograman?

Jawabannya adalah dengan membuat API.

Untuk membuat API, arsitektur yang paling populer yaitu RESTful API.  

Pada tutorial kali ini saya akan sharing bagaimana membuat RESTful API menggunakan node.js, express, dan MySQL secara step by step.

Mari kita mulai.

Dapatkan diskon 75% paket hosting dan gratis domain + extra diskon 5% dengan menggunakan kupon: MFIKRI

Order Sekarang.!

 

Api itu RESTful API?

RESTful API merupakan implementasi dari API  (Application Programming Interface).

REST (REpresentational State Transfer) adalah suatu arsitektur metode komunikasi yang menggunakan protocol HTTP untuk pertukaran data dan metode ini sering diterapkan dalam pengembangan aplikasi.

Mungkin terdengar rumit tapi sebenarnya tidak.

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:

HTTP Tradisional

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.

Dalam tutorial kali ini, kita akan membuat RESTful API dengan response data dalam format JSON.

Berikut arsitektur dari RESTful API:

Restful-api-arsitektur

Dimana client dapat dari berbagai macam platform, seperti aplikasi web, desktop, ataupun mobile app.

Keren bukan?

Ok, mari kita mulai.

 

Step #1. Design RESTful API

Ini penting!

Sebelum membuat RESTful API, ada baiknya di kita definisikan dulu EndPoint dari RESTful API yang akan dibuat.

EndPoint merupakan routes dari API yang akan kita buat.

RESTful API menggunakan HTTP verbs.

HTTP verbs yang umum digunakan adalah GET, POST, PUT, dan DELETE.

GET untuk mendapatkan data dari server atau lebih dikenal dengan istilah READ, POST untuk meng-CREATE new data, PUT untuk UPDATE data, dan DELETE untuk menghapus data.

Atau lebih dikenal dengan istilah CRUD (Create Read Update Delete).

Pada tutorial kali ini, saya akan sharing bagaimana membuat RESTful API sederhana 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 table di database yaitu table products.

Berikut rancangan dari RESTful API yang akan kita buat.

endpoint

 

Step #2. Buat Database dan Table

Buat sebuah database baru dengan MySQL, anda dapat menggunakan tools seperti SQLyog, PHPMyAdmin atau sejenisnya.

Disini saya membuat database dengan nama restful_db.

Jika Anda membuat database dengan nama yang sama itu lebih baik.

Untuk  membuat database dengan MySQL, dapat dilakukan dengan mengeksekusi query berikut:

CREATE DATABASE restful_db;

Perintah SQL diatas akan membuat sebuah database dengan nama restful_db.

Selanjutnya, buat sebuah table di dalam database restful_db.

Disini saya membuat sebuah table dengan nama product.

Jika Anda membuat table dengan nama yang sama itu lebih baik. 

Untuk membuat table product, dapat dilakukan dengan mengeksekusi perintah SQL berikut:

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

Selanjutnya, insert beberapa data kedalam table product dengan mengeksekusi query berikut:

INSERT INTO product(product_name,product_price) VALUES 
('Product 1','2000'),
('Product 2','5000'),
('Product 3','4000'),
('Product 4','6000'),
('Product 5','7000');

Perintah SQL diatas akan menginput 5 data kedalam table product.

 

Step #3. Install Dependencies

Sebelum menginstall dependencies, silahkan buat sebuah folder, disini saya membuat sebuah folder dengan nama restful-api.

Perhatikan gambar berikut untuk lebih jelasnya:

project-structure

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.

Akan tetapi, pada tutorial kali ini saya tidak menggunakan Command Prompt, melainkan menggunakan Git Bash Terminal.

Saya sangat merekomendasikan Anda juga menggunakan Git Bash.

Anda dapat mendownload Git Bash pada url berikut:

https://git-scm.com/downloads

Silahkan download sesuai dengan platform Anda, kemudian install di komputer Anda.

Jika Anda telah menginstall Git Bash, silahkan buka folder restful-api yang telah dibuat sebelumnya.

Kemudian klik-kanan dan pilih Git Bash Here, seperti gambar berikut:

gitbash here

Maka akan muncul terminal seperti gambar berikut:

gitbash-terminal

Pada terminal diatas, anda dapat menginstall semua dependencies yang Anda perlukan untuk project Anda.

Sebelum menginstall dependencies, kita perlu membuat package.json.

Untuk membuat package.json, anda dapat menjalankan perintah berikut pada terminal.

npm init

Seperti gambar berikut:

npm-init

Perintah diatas akan membuat sebuah file bernama package.json secara otomatis pada project Anda.

Selanjutnya,

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

npm install --save express mysql body-parser

Seperti gambar berikut:

install-dependencies

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": "M Fikri",
  "license": "ISC",
  "dependencies": {
    "body-parser": "^1.18.3",
    "express": "^4.16.4",
    "mysql": "^2.16.0"
  }
}

 

Step #4. Buat file Index.js

Buat sebuah file dengan nama index.js. Seperti gambar berikut:

indexjs

Kemudian open index.js dan ketikan 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...');
});

 

Step #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.

Jika Anda juga menggunakan POSTMAN itu lebih baik.

Anda dapat mendownload POSTMAN di official websitenya:

https://www.getpostman.com/

Download dan Install POSTMAN di komputer Anda kemudian open.

Jika POSTMAN telah terbuka, maka akan terlihat seperti gambar berikut:

postman

Ok, waktunya pengujian:

Running project dengan mengetikan perintah:

node index

Pada terminal seperti gambar berikut:

node-index

Jika terlihat seperti gambar diatas, berarti berjalan dengan baik.

Mari kita uji EndPoint-nya satu per satu.

 

#1. 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:

get-all-product

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

 

#2. 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:

get-single-product

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

 

#3. 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):

{
        "product_name": "Product 6 Added",
        "product_price": 6000
}

Kemudian klik tombol Send, maka Akan terlihat hasilnya seperti gambar berikut:

Post-method

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’.

 

#4. 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):

{
        "product_name": "Product 2 Update",
        "product_price": 7000
}

Kemudian klik tombol Send, maka Akan terlihat hasilnya seperti gambar berikut:

Put-method

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.

 

#5 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:

delete-method

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.

Related: Tutorial Membuat RESTful API dengan Node JS, Express, dan MongoDB

Kesimpulan

Pembahasan kali ini adalah tentang bagaimana membuat RESTful API sederhana dengan node.js, express, dan mysql.

REST (REpresentational State Transfer) adalah suatu arsitektur metode komunikasi yang menggunakan protocol HTTP untuk pertukaran data dan metode ini sering diterapkan dalam pengembangan aplikasi.

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

Pada tutorial kali ini, anda telah belajar bagaimana membuat RESTful API sederhana dengan node.js, express, dan mysql.

Sekarang Anda dapat membuat API yang lebih kompleks lagi.

Jadi tunggu apa lagi, Let’s coding!

Dapatkan diskon 75% paket hosting dan gratis domain + extra diskon 5% dengan menggunakan kupon: MFIKRI

Order Sekarang.!

Dapatkan diskon 75% paket hosting dan gratis domain + extra diskon 5% dengan menggunakan kupon: MFIKRI

Order Sekarang.!
Download Source

Komentar (9)

gery kusuma, 22 January 2019 10:51 - Reply

mantap tutorialnya... semoga bisa rutin ngasih tutorial yg keren2...

Hikmat, 01 February 2019 18:58 - Reply

pak bole minta source code web ini terima kasih

hendra, 22 February 2019 08:10 - Reply

Mas minta no nya dong mas, sya mau konsul terkait website

rendy, 07 April 2021 16:03 - Reply

Kak numpang tanya. kok ketika running di postman, punya saya tidak mengeluarkan keluaran yang sama. kemudian, kenapa url pada postman itu menuju ke localhost yang biasanya nya diletakkan pada drive C, sedangkan folder dan file yang dibuat berada pada drive D ? terima kasih kak

M Fikri, 25 April 2021 07:26 - Reply

Jika tidak mengeluarkan output yang sama, itu berarti terdapat error pada kodenya. soal drive C,D, atau E tidak ada pengaruhnya dengan localhost kecuali ada apache server yang jalan secara bersamaan.
Node,js tidak berjalan diatas apache server seperti PHP, jadi Anda bebas membuat project di drive manapun asalkan anda menjalankan projectnya di folder tersebut.

Nur Iswanto, 29 June 2021 09:50 - Reply

Alhamdulillah sangat membantu sekali. Terima kasih atas penjabarannya yang sangat lengkap. Semoga Allah membalasmu dengan kebaikan dan semoga ini bermanfaat bagi para pembaca.

keilil, 07 August 2021 00:45 - Reply

manthabzz sekali, maturnuwun...

Abdullah Arif, 13 October 2021 08:50 - Reply

Mas, tolong buatkan tutor auntentkasi JWT ya, mungkin bisa untuk lanjutannya tutor ini, terima kasih.

Leave a Comment