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

Bumi Bumi Mengelilingi Matahari 3D Cara meruning dengan menggunakan Keyboard: CTRL + y Yaitu untuk Revolusi Bumi mengelilingi Matahari y yaitu Kebalikannya CTRL + d yaitu untuk Rotasi poros Bumi d yaitu kebalikannya #include #include #include static int year = 0, day = 0; void init(void) { glClearColor (0.0, 0.0, 0.0, 0.0); glShadeModel (GL_FLAT); } void display(void) { glClear (GL_COLOR_BUFFER_BIT); glColor3f (1.0, 0.0, 0.0); /*Warna Merah*/ glPushMatrix(); glutWireSphere(1.0, 20, 16); /* Draw Matahari */ glRotatef ((GLfloat) year, 0.0, 1.0, 0.0); glTranslatef (2.0, 0.0, 0.0); glRotatef ((GLfloat) day, 0.0, 1.0, 0.0); glutWireSphere(0.2, 10, 8); /* Draw planet Kecil */ glPopMatrix(); glutSwapBuffers(); } void reshape (int w, int h) { glViewport (0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode (GL_PROJECTION); glLoadIdentity (); gluPerspective(60.0, (GLfloat) w/(GLfloat) h, 1.0, 20.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity...

Game Diver Jimmy

Bantu Kenny menemukan harta karun, awas ada mahluk yang membahayakan. DOWNLOAD DISINI!!!

Hacking Registry dengan batch file

Pada dasarnya batch file adalah sebuah script apabila script tersebut dijalankan akan berhubungan langsung dengan shell windows. Perintah dasar seperti copy, rename dan masih banyak lagi. Kita akan bahas disini yaitu perintah REG. Perintah REG merupakan perintah untuk mengakses Registry secara langsung.  Perintah dasarnya: REG ADD REG DELETE REG COPY REG SAVE REG LOAD REG UNLOAD REG QUERY REG COMPARE REG EXPORT REG IMPORT 1. REG ADD digunakan untuk menambahkan key atau value pada registry windows. Struktur dari perintah REG ADD adalah sebagai berikut: REG ADD KeyName [/v NamaValue] [/t Type] [/d Data] [/f] Keterangan: REG ADD perintah dasar untuk menambah key atau value pada registry KeyName yang akan dijadikan sasaran (root key) HKEY_CLASSES_ROOT => HKCR HKEY_CURRENT_USER => HKCU HKEY_LOCAL_MACHINE => HKLM HKEY_USERS => HKU HKEY_CURRENT_CONFIG => HKCC NamaValue => digunakan untuk menambahkan nama value pada registry Type =...