Langsung ke konten utama

WEB FRAMEWORK || MEMBUAT REST API DI NODE JS



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.


*    Apa itu REST dan RESTful API?

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.

*    Prinsip REST

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 http443 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 POSTPUT 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 Found404 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 GETPOSTPUT, 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

Tujuannya adalah dia akan generate file package.json. NPM menggunakan package.json untuk menspesifikasikan versi dari paket (library) yang dibutuhkan di aplikasi buatan lu.

Selanjutnya, Install semua dependencies yang dibutuhkan dengan mengetikkan perintah berikut pada terminal:
npm install --save express mysql body-parser


Jika 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/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...');
});


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

Postingan populer dari blog ini

Makalah Pengenalan Lingkungan Kerja SQL Server

KATA PENGANTAR Dengan menyebut nama Tuhan Yang Maha Esa, kami ucapkan puji syukur atas kehadirat-Nya, yang telah melimpahkan rahmat, hidayah, dan inayah-Nya , sehingga dapat menyelesaikan makalah berupa ‘Lingkungan kerja  DBMS: Microsoft SQL Server Management Studio’ dan juga kami berterima kasih kepada Eko Win Kenali, S.Kom., M.Cs. selaku dosen mata kuliah Pemrograman SQL Lanjut di Politeknik Negeri Lampung yang telah memberikan tugas ini. Adapun ini telah kami usahakan semaksimal mungkin dengan bantuan referensi blog maupun website yang ada di internet sehingga dapat memperlancar pembuatan makalah ini. Penyusun sangat berharap laporan ini dapat berguna dalam rangka menambah wawasan serta pengetahuan tentang pengenalan lingkungan kerja DBMS SQL . Penyusun juga menyadari sepenuhnya bahwa di dalam makalah ini terdapat kekurangan dan jauh dari kata sempurna. Oleh sebab itu, penyusun berharap adanya kritik, saran dan usulan demi perbaikan makalah yang telah kami buat di masa ya...

Tutorial Implementasi Sistem 3-Tier (Studi Kasus Data Covid-19 Menggunakan Json)

Assalamualaikum Warohmatullahi Wabarokatuh   J Haloo halooo… Sahabat informatika J J di seluruh Indonesia,   semoga sehat selalu yah J . Nah pada artikel kali ini aku bakal jelasin tentang “Implementasi 3 Tier”. Untuk studi kasus yang akan di gunakan yaitu penyebaran COVID-19. Kita akan diminta untuk menampilkan data orang yang positif covid, meninggal dan juga sembuh, menggunakan JSON dan link api. Sebelum lanjut , yuk pahamin dulu konsep 3 tier berikut   Konsep pemrogramman three tier (3 tier) atau yang biasa disebut dengan konsep  client server programming  merupakan konsep pemrograman yang terdiri dari 3 komponen logic layer yang saling berkaitan. Berikut gambaran secara umum untuk arsitektur pemrogramman model three-tier memiliki 3 fungsionalitas sistem yang independent, yaitu 1.  Komponen klien   (Client application)  yaitu komponen yang berjalan diatas local komputer user / client. (tier 1) Pada layer i...