Hallo temen-temen semua . Salam Informatika J
Sebelum
kita membuat REST API kita harus tau dulu apa itu pengertian nya. Supaya lebih
mudah
dalam memahami cara-caranya. Pada tutorial
kali ini saya akan sharing bagaimana membuat RESTful API menggunakan node.js,
express, dan MySQL secara step by step.
Representational
State Transfer, atau REST, menjelaskan gaya arsitektur untuk layanan web.
REST terdiri dari serangkaian standar atau kendala untuk berbagi data antara
sistem yang berbeda, dan sistem yang menerapkan REST dikenal sebagai RESTful.
REST adalah konsep abstrak, bukan bahasa, framework, atau jenis perangkat
lunak.
Analogi
longgar untuk REST adalah menyimpan koleksi vinil vs. menggunakan layanan musik
streaming. Dengan koleksi vinil fisik, setiap catatan harus digandakan secara
keseluruhan untuk dibagikan dan didistribusikan salinannya. Namun, dengan
layanan streaming, musik yang sama dapat dibagikan selamanya melalui referensi
ke beberapa data seperti judul lagu. Dalam hal ini, streaming musik adalah
layanan RESTful, dan koleksi vinil adalah layanan non-RESTful.
API adalah
Application Programming Interface, yang merupakan antarmuka yang memungkinkan
program perangkat lunak untuk berkomunikasi satu sama lain. RESTful
API hanyalah sebuah API yang menganut prinsip-prinsip dan kendala REST.
Dalam API Web, server menerima request melalui endpoint URL dan
mengirim response sebagai balasannya, yang seringkali berupa data dalam
format seperti JSON.
Tujuan
nya untuk menjadikan system dengan performa yang baik, cepat, dan mudah untuk
dikembangkan terutama dalam pertukaran dan komunikasi data
Kenapa perlu
membuat RestFul API
Jika
kita perhatikan arsitektur tradisional komunikasi data antara client dab server
terlihat seperti gambar berikut:
Client
mengirimkan request ke server melalui HTTP Request dan server memberikan
response melalui HTTP response. Responn 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 tersebut tidak
membutuhkan HTML sebagai respons dari server.
Karena
Android dan IOS menggunakan bahassa pemrograman yang berbeda dan tidak mengenal
HTML. Oleh sebab itu kita perlu mebuat RESTful API. RESful API inilah yang
nantinya akan menjadi jembatan komunikasi data antara klien dan server.
Sehingga , server tidak lagi mengirimkan HTML sebagai response, melainkan hanya
data. Hal ini dapat menghemat bandwith server. Response dalam bentuk data ini
dapat digunakan untuk berbagai
macam platform dari aplikasi yang
berbeda bahasa pemrograman. Respon dalam bentuk data ini, biasanya berformat
JSON atau XML. Akan tetapi yang sering digunakan adalah JSON. Berikut
arsitektur dari RESTful API:
Client
dapat dari berbagai macam platform, seperti aplikasi web, desktop ataupun
mobile app.
Enam batasan panduan
mendefinisikan arsitektur REST, yang diuraikan di bawah ini.
Interface:
Antarmuka komponen harus sama. Ini berarti menggunakan standar URI Uniform untuk mengidentifikasi sumber
daya—dengan kata lain, path yang dapat dimasukkan ke bilah lokasi browser.
Client-Server:
Ada pemisahan kekhawatiran antara server, yang menyimpan dan memanipulasi data,
dan klien, yang meminta dan menampilkan respon.
Stateless Interactions:
Semua informasi tentang setiap permintaan terkandung dalam setiap permintaan
individu dan tidak tergantung pada status session.
Cacheable:
Klien dan server dapat menyimpan sumber daya.
Layered System:
Klien dapat dihubungkan ke server akhir, atau lapisan menengah seperti
load-balancer.
Code on Demand
(Opsional): Seorang klien dapat mengunduh kode,
yang mengurangi visibilitas dari luar.
·
Request dan Response
Anda
sudah terbiasa dengan kenyataan bahwa semua situs web memiliki URL yang dimulai
dengan http (atau https untuk versi aman).
HyperText Transfer Protocol, atau HTTP, adalah metode komunikasi antara
klien dan server di internet.
Kita
melihatnya paling jelas di bilah URL browser kita, tetapi HTTP dapat digunakan
untuk lebih dari sekadar meminta situs web dari server. Ketika Anda pergi ke
URL di web, Anda sebenarnya melakukan permintaan GET pada
sumber daya spesifik itu, dan situs web yang Anda lihat adalah badan tanggapan.
Kita akan membahas GET dan jenis
permintaan lainnya segera.
HTTP
berfungsi dengan membuka koneksi TCP (Transmission Control Protocol)
ke port server (80 untuk http, 443 untuk https) untuk membuat permintaan, dan
server yang mendengarkan merespon dengan status dan badan.
Permintaan
harus terdiri dari URL, metode, informasi tajuk, dan badan.
·
Metode
Request
Ada
empat metode HTTP utama, juga disebut sebagai kata kerja HTTP, yang biasanya digunakan
untuk berinteraksi dengan API web. Metode-metode ini menentukan tindakan yang
akan dilakukan dengan sumber daya apa pun yang diberikan.
Metode request HTTP
secara longgar sesuai dengan paradigma CRUD, yang merupakan singkatan
dari Create, Update, Read, Delete. Meskipun CRUD mengacu pada
fungsi yang digunakan dalam operasi basis data, kita dapat menerapkan
prinsip-prinsip desain tersebut ke kata kerja HTTP di RESTful API.
Aksi
|
Metode Request
|
Definisi
|
Baca
|
GET
|
Mengambil sumber daya
|
Create
|
POST
|
Menciptakan sumber daya baru
|
Update
|
PUT
|
Memperbarui sumber daya yang ada
|
Delete
|
DELETE
|
Menghapus sumber daya
|
GET adalah operasi
yang aman dan read-only yang tidak akan mengubah status server. Setiap kali
Anda menekan URL di browser Anda, seperti https://www.google.com,
Anda mengirim permintaan GET ke
server Google.
POST digunakan untuk
membuat sumber daya baru. Contoh POSTyang
sudah dikenal adalah mendaftar sebagai pengguna di situs web atau aplikasi.
Setelah mengirimkan formulir, permintaan POST dengan
data pengguna mungkin dikirim ke server, yang kemudian akan menulis informasi
itu ke dalam basis data.
PUT memperbarui
sumber daya yang ada, yang dapat digunakan untuk mengedit pengaturan pengguna
yang ada. Tidak seperti POST, PUT adalah idempoten, yang
berarti panggilan yang sama dapat dibuat beberapa kali tanpa menghasilkan hasil
yang berbeda. Misalnya, jika Anda mengirim permintaan POST yang sama untuk membuat
pengguna baru dalam database berkali-kali, itu akan membuat pengguna baru
dengan data yang sama untuk setiap permintaan yang Anda buat. Namun,
menggunakan permintaan PUT yang sama
pada pengguna yang sama akan terus menghasilkan hasil yang sama.
DELETE, seperti namanya,
cukup akan menghapus sumber daya yang ada.
·
Kode
Respon
Setelah permintaan melewati dari klien ke server,
server akan mengirim kembali respon HTTP, yang akan mencakup metadata tentang
respon yang dikenal sebagai header, serta badan. Bagian pertama dan terpenting
dari respon adalah kode status, yang menunjukkan apakah permintaan
berhasil, jika ada kesalahan, atau jika tindakan lain harus diambil.
Kode respon paling terkenal yang Anda kenal
adalah 404, yang berarti Not Found. 404 adalah bagian dari
kelas 4xx dari kode status, yang
menunjukkan kesalahan klien. Ada lima kelas kode status yang masing-masing
berisi serangkaian respon.
1xx: Informasi
2xx: Sukses
3xx: Pengalihan
4xx: Kesalahan Client
5xx: Kesalahan Server
Endpoint
REST API
Ketika API dibuat di
server, data yang dikandungnya dapat diakses melalui
endpoint. Endpoint adalah URL dari permintaan yang dapat menerima dan
memroses permintaan GET, POST, PUT,
atau DELETE.
URL API akan terdiri
dari root, path, dan string kueri opsional.
Root misalnya https://api.example.com atau https://api.example.com/v2: Root API,
yang mungkin terdiri dari protokol, domain, dan versi.
Path misalnya /users/atau /users/5: Lokasi unik sumber daya
tertentu.
Query Parameter
(opsional) misalnya ?location=chicago&age=29:
Pasangan nilai kunci opsional yang digunakan untuk menyortir, memfilter, dan
pagination. Kita dapat menggabungkan mereka semua untuk mengimplementasikan
sesuatu seperti contoh di bawah ini, yang akan mengembalikan daftar semua
pengguna dan menggunakan parameter kueri limit untuk
memfilter tanggapan untuk menyertakan sepuluh hasil saja.
https://api.example.com/users?limit=10
Secara umum, ketika orang menyebut API sebagai
RESTful API, mereka merujuk pada konvensi penamaan yang digunakan untuk
membangun endpoint URL API. Beberapa konvensi penting untuk RESTful API standar
adalah sebagai berikut:
Paths harus jamak: Misalnya, untuk mendapatkan
pengguna dengan id dari 5,
kita akan menggunakan /users/5,
bukan /user/5.
Endpoint tidak boleh menampilkan ekstensi file:
Meskipun API kemungkinan besar akan mengembalikan JSON, URL tidak boleh
diakhiri dengan .json.
Endpoint harus menggunakan kata benda, bukan kata
kerja: Kata-kata seperti add dan delete tidak boleh muncul di URL
REST. Untuk menambah pengguna baru, Anda cukup mengirim permintaan POST ke /users, bukan sesuatu seperti /users/add. API harus dikembangkan
untuk menangani beberapa jenis permintaan ke URL yang sama.
Path bersifat case sensitive, dan harus ditulis
dalam huruf kecil dengan tanda hubung sebagai lawan dari garis bawah. Semua konvensi ini
adalah pedoman, karena tidak ada standar REST yang ketat untuk diikuti. Namun,
menggunakan pedoman ini akan membuat API Anda konsisten, akrab, dan mudah
dibaca dan dipahami.
1.
Design
RESTful API
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).
Berikut rancangan dari RESTful
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. Disini
saya membuat database dengan nama restful_db
di phpmyadmin.
Selanjutnya, buat sebuah table di dalam
database restful_db.
Disini saya membuat sebuah table dengan
nama product. Dengan kategori sbb:
1
2
3
4
5
|
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:
1
2
3
4
5
6
|
INSERT
INTO product(product_name,product_price)
VALUES('Product 1','2000'),('Product 2','5000'),('Product 3','4000'),('Product 4','6000'),('Product 5','7000'); |
3. Install
Dependencies
Sebelum
menginstall dependencies, silahkan buat sebuah folder, disini saya membuat
sebuah folder dengan nama restful-api.
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 di VisualCode, Gitbash terminal ataupun Command Prompt.
Sebelum menginstall dependencies, kita perlu
membuat package.json.
Untuk membuat package.json, anda dapat
menjalankan perintah berikut pada terminal.
npm init |
Selanjutnya, Install semua dependencies yang dibutuhkan dengan mengetikkan perintah berikut pada terminal:
npm
install --save express mysql body-parserJika dibuka hasilnya seperti ini: |
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
{ "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" }} |
4 4.
Buat
File Index.js
1.
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
const
express = require('express');const
bodyParser = require('body-parser');const app
= express();const
mysql = require('mysql');// parse
application/jsonapp.use(bodyParser.json());//create
database connectionconst
conn = mysql.createConnection({ host: 'localhost', user: 'root', password: '', database: 'restful_db'});//connect
to databaseconn.connect((err)
=>{ if(err) throw
err; console.log('Mysql
Connected...');});//tampilkan
semua data productapp.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 idapp.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 baruapp.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 idapp.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 idapp.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
listeningapp.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.
Gunakan perintah node index
Gunakan POSTMAN untuk
menguji API yang telah kita buat..
Anda dapat mendownload POSTMAN di official websitenya:
|
Sumber :



Komentar
Posting Komentar