Langsung ke konten utama

Apa itu API

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.

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:
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:
Dimana client dapat dari berbagai macam platform, seperti aplikasi web, desktop, ataupun mobile app.

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.

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.
Buat database dengan MySQL berikut:

Step #3. Install Dependencies

Buat sebuah folder dengan nama restful-api.
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:
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.
Jika menggunakan linux/mac os bisa langsung di folder Documents.
Buka Terminal :
$ npm -v
kalo keluar 6.13.4 itu versinya. kalo belum silahkan di install dulu.
$ npm init 
Perintah diatas akan membuat sebuah file bernama package.json secara otomatis pada project Anda.
Install semua dependencies yang dibutuhkan dengan mengetikkan perintah berikut pada terminal:
$ npm install --save express mysql body-parser
Cek didalam folder restful-api ada file package.json dan module

Step #4. Buat file Index.js

Buat sebuah file dengan nama index.js di folder restful-api


file index.js isinya :
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: 'root',
  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...');
});

saya ada  gagal koneksi :
Tambahkan di bawah password 
 socketPath: '/Applications/MAMP/tmp/mysql/mysql.sock' Pengguna Mac

Step #5.  Testing

Uji coba API yang telah kita buat untuk memastikan RESTful API berjalan dengan baik. bisa menggunakan POSTMAN atau YARC (browser).
Untuk menguji API, ada banyak tools yang dapat digunakan.
Jalankan 
$ node index 
Jika status nya Mysql Connected berarti berhasil connect ke db.

Pengujian :
#1. Get All Product (GET)


#2. Get Single Product (GET)

#3. Create New Product (POST)
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)
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)
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.

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.

Sumber :

Komentar

Postingan populer dari blog ini

Latihan J2ME ChoiceGroup Tampil

import javax.microedition.lcdui.*; import javax.microedition.midlet.*;   public class Midlet_8 extends MIDlet implements CommandListener {     private Display display;     private Form frmInput;     private ChoiceGroup cgPilihan;     private TextField nama;     private Command cmdKeluar;     private Command cmdTampil;     private CommandListener listener;     private StringItem siPilih;     //private Alert alert;     public Midlet_8 () {  }     public void startApp() {         //Form         frmInput = new Form("Form Input Nama");         nama = new TextField("Nama: ", null, 35, TextField.ANY);         frmInput.append(nama);         cgPilihan = new ChoiceGroup("Pilih Jurusan : ", Choice.POPUP);         cgPilihan.append("Teknik Inf...
tugasAlgoLanjut HITUNG LUAS PERSEGI Nama kelompok : Aditya Dwi Saputra (111 0511 003) Syamsul Amin (111 0511 048) Studi Kasus Pada kesempatan kali ini kelompok kami ingin membuat aplikasi yang sederhana untuk menghitung luas persegi panjang. Yang terdiri dari: ADT (Abstract Data type), Struct, fungsi, array. Pseudecode mulai mendeklarasikan typedef int jumlah struct{ jumlah hasiluas; }persegi; menginisialisasi fungsi luas void luas (jumlah p, jumlah l){ persegi.hasiluas=p*l; } melakukan perulangan sebanyak data array input data persegi ke array input panjang input lebar pemanggilan fungsi luas tutup perulangan cetak data yang tersimpan didalam array finish Source Code #include //deklarasi ADT typedef int jumlah; //deklarasi struct struct{ jumlah hasiluas; }persegi; //Fungsi penghitung luas. void luas (jumlah p, jumlah l){ persegi.hasiluas = p * l; } //Fungsi utama. int main() { //Pendeklarasian variabel yang dibutuhkan. ...