Site icon Knowledge Base Jagoan Hosting Indonesia

Cara Membuat REST API dengan Node.js

Halo, Sob! Saat ini, REST API dengan Node.js telah menjadi bagian penting dalam pengembangan aplikasi modern. REST API memungkinkan integrasi dan komunikasi antara berbagai sistem secara efisien, sementara Node.js menawarkan kecepatan dan fleksibilitas dalam membangun layanan backend.

Jika kamu yang belum familiar dengan REST API atau Node.js, kamu bisa membaca penjelasan singkat tentang keduanya sebelum memulai tutorial ini.

REST API

Expand

Representational State Transfer Application Programming Interface atau yang dapat kita sebut REST API adalah sebuah arsitektur yang sering di implementasi pada pemrograman baik website maupun mobile. Konsep utama dari REST api adalah penggunaan protokol HTTP dan HTTPS untuk melakukan komunikasi antara client dan server dengan memakai prinsip-prinsip REST berikut:

  1. Stateless: Setiap ada permintaan dari client ke server maka harus mengandung semua informasi yang diperlukan untuk memproses permintaan. Pada kasus ini Server tidak boleh menyimpan informasi tentang status client.
  2. Resource-Based: Segala sesuatu yang dapat diakses melalui API dianggap sebagai “resource”dan setiap resource diidentifikasi oleh URL (Uniform Resource Locator).
  3. REST API menggunakan metode HTTP untuk melakukan operasi pada resource, seperti:
  1. Representasi: Resource dapat memiliki berbagai representasi, seperti JSON atau XML. Client dapat meminta format tertentu sesuai kebutuhan.
  2. Caching: Respons dari server dapat disimpan (cached) untuk mengurangi beban server dan meningkatkan performa.

REST API sendiri banyak digunakan karena REST API dapat digunakan oleh berbagai platform dan bahasa pemrograman. Selama bisa membuat permintaan HTTP, sistem apapun dapat berinteraksi dengan API, menjadikannya sangat fleksibel.

Node.js

Expand

Node.js adalah platform berbasis JavaScript yang memungkinkan pengembang untuk menjalankan kode JavaScript di server. Ini menjadikan JavaScript bukan hanya bahasa pemrograman sisi klien (frontend), tetapi juga sisi server (backend). Pada pemrograman Node.js terdapat framework minimalis yakni express.js

Bagaimana, Sob? Sudah lebih paham dan siap mengikuti cara membuat REST API dengan Node.js menggunakan framework express.js dan database MySQL? Yuk langsung simak, Sob!

STEP 1: Membuat database pada database MySQL

Langkah pertama yang harus  dilakukan adalah membuat database pada database MySQL

Kemudian pada database yang telah dibuat, create table menggunakan syntax SQL berikut:

Jika sudah, maka selanjutnya dapat  isikan terlebih dahulu dummy data dengan syntax SQL berikut:

Pada tahap ini kamu telah berhasil membuat database dan table serta mengisikan dummy data yang nantinya dapat digunakan pada API.


STEP 2: Membuat project Node.js baru pada PC lokal

Pada langkah ini kamu harus sudah membuat project node.js baru dengan command “npm init -y” Selanjutnya dapat sesuaikan file package.json dengan script berikut:

{ "name": "restapi", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "start": "node index.js", "test": "echo "Error: no test specified" && exit 1" }, "author": "", "license": "ISC", "dependencies": { "express": "^4.21.0", "mysql2": "^3.11.3", "package.json": "^2.0.1" } }

Selanjutnya dapat kamu jalankan command “npm install” dan module node yang kamu butuhkan dalam pembuatan API ini telah berhasil terinstall. Selanjutnya yaitu membuat file index.js dan dapat disesuaikan dengan code berikut:

const express = require("express"); const app = express(); const port = 3000; app.use(express.json()); app.use( express.urlencoded({ extended: true, }) ); app.get("/", (req, res) => { res.json({ message: "ok" }); }); app.listen(port, () => { console.log(`Example app listening at http://localhost:${port}`); });

Dan selanjutnya jalankan perintah “npm start” maka tampilan yang didapatkan akan sesuai gambar berikut ini:


STRUKTUR REST API

Mohon diperhatikan struktur dari project API yang dibuat.

Pada file config.js akan dibuat sebagai penyimpanan informasi dari database MySQL yang telah dibuat sebelumnya, file ini juga berfungsi untuk pagination, hal ini diperlukan agar ketika melakukan GET data tidak akan memakan waktu yang lama karena akan dibatasi oleh pagination. Kemudian pada file helper.js akan digunakan fungsi pembantu seperti menghitung array offset untuk pagination. Selanjutnya ada fungsi routes/jagoanRoute.js akan digunakan untuk menghubungkan URL ke fungsi API yang akan kita buat pada services/jagoanLanguages.js

Kemudian pada fungsi services/db.js akan digunakan sebagai koneksi dari file js ke database MySQL. Dan yang terakhir adalah pada file services/jagoanLanguages akan digunakan sebagai base penyimpanan fungsi CRUD yang akan dibuat.


STEP 3: Penyesuaian Code File

Langkah pertama adalah menyesuaikan file config.js dengan syntax berikut:

const config = { db: { host: "localhost", user: "root", password: "", database: "jagoan_api", connectTimeout: 6000 }, listPerPage: 10, }; module.exports = config;

Kemudian pada file helper.js kamu sesuaikan dengan syntax berikut:

function getOffset(currentPage = 1, listPerPage) { return (currentPage - 1) * [listPerPage]; } function emptyOrRows(rows) { if (!rows) { return []; } return rows; } module.exports = { getOffset, emptyOrRows }

Selanjutnya kamu buat file db.js agar code yang akan dibuat dapat terhubung dengan file database MySQL.

const mysql = require('mysql2/promise'); const config = require('../config'); async function query(sql, params) { const connection = await mysql.createConnection(config.db); const[results, ] = await connection.execute(sql, params); return results; } module.exports = { query }

Kemudian langkah selanjutnya dapat kamu verifikasi konfigurasi database dan koneksi database yang telah dibuat sebelumnya dengan membuat file services/jagoanLanguages.js yakni untuk melakukan get all dummy data yang sebelumnya telah diinput. Caranya cukup mudah yakni masukan code berikut pada file terkait:

const db = require('./db'); const helper = require('../helper'); const config = require('../config'); // Fungsi get all data async function getMultiple(page = 1){ const offset = helper.getOffset(page, config.listPerPage); const rows = await db.query( `SELECT id, name, started_year, divisi, age FROM jagoan_api LIMIT ${offset},${config.listPerPage}` ); const data = helper.emptyOrRows(rows); const meta = {page}; return { data, meta } }

Kemudian masukan syntax berikut ke routes/jagoanRoute.js

const express = require('express'); const router = express.Router(); const jagoanLanguages = require('../service/jagoanLanguages'); router.get('/', async function(req, res, next) { try { res.json(await jagoanLanguages.getMultiple(req.query.page)); } catch (err) { console.error(`Error while getting programming languages`, err.message); next(err); } });

Jangan lupa untuk memanggil konfigurasi yang telah dibuat sebelumnya, pada file index.js. Caranya sangat mudah yakni tinggal copy syntax berikut ke file index.js kamu

const express = require("express"); const app = express(); const port = 3000; const JagoanRoutes = require("./routes/jagoanRoute"); app.use(express.json()); app.use( express.urlencoded({ extended: true, }) ); app.get("/", (req, res) => { res.json({ message: "ok" }); }); app.use("/jagoan", JagoanRoutes); app.use((err, req, res, next) => { const statusCode = err.statusCode || 500; console.error(err.message, err.stack); res.status(statusCode).json({ message: err.message }); return; }); app.listen(port, () => { console.log(`Example app listening at http://localhost:${port}`); });

Dan jalankan project node.js kamu menggunakan perintah “npm run” maka akan menampilkan hasil show all data dari database


SHOW PER PAGE

Kemudian, kamu juga dapat melakukan show data per-page dengan mengakses link http:localhost:3000/jagoan?page=2

Pada tampilan per-page ini akan melakukan Get data sebanyak 10. Hal ini sesuai dengan code yang telah dibuat sebelumnya pada config.js


POST

Selanjutnya akan membuat fungsi Post atau Create pada API. Langkah pertama adalah paste code berikut pada file routes/jagoanRoute.js untuk mendefinisikan endpoint

router.post('/', async function(req, res, next) { try { res.json(await jagoanLanguages.create(req.body)); } catch (err) { console.error(`Error while creating programming language`, err.message); next(err); } });

Kemudian jangan lupa untuk membuat fungsi pada services/jagoanLanguages.js seperti code berikut:

async function create(jagoan) { const result = await db.query( `INSERT INTO jagoan_api (name, started_year, divisi, age) VALUES ('${jagoan.name}', ${jagoan.started_year}, '${jagoan.divisi}',${jagoan.age})` ); let message = 'Error in creating data'; if (result.affectedRows) { message = 'Data created successfully'; } return {message}; } Jika sudah, maka kamu telah berhasil membuat route dan fungsi POST pada API. Untuk mencoba melakukan create API,  pastekan command berikut pada tools API testing, misalnya seperti Postman
curl -i -X POST -H 'Accept: application/json' -H 'Content-type: application/json' http://localhost:3000/jagoan --data '{"name":"Abdul", "started_year": 2023, "divisi":"Management", "age": 20}'

Setelah berhasil mengirim  POST maka muncul seperti berikut:


UPDATE

Selanjutnya, akan membuat fungsi Update. Untuk caranya sama dengan fungsi Create. Langkah awal adalah membuat route management pada code kamu yakni dengan menambahkan script berikut pada file routes/jagoanRoute.js

router.put('/:id', async function(req, res, next) { try { res.json(await jagoanLanguages.update(req.params.id, req.body)); } catch (err) { console.error(`Error while updating programming language`, err.message); } });

Dan jangan lupa untuk menambahkan juga fungsi Update pada /services/jagoanLanguages dengan syntax code berikut:

async function update(id, jagoan){ const result = await db.query( `UPDATE jagoan api SET name="${jagoan.name}", started_year=${jagoan.started_year}, divisi="${jagoan.divisi}", age=${jagoan.age} WHERE id=${id}` ); let message = 'Error in updating data'; if (result.affectedRows) { message = 'Data updated successfully'; } return{message}; }

Jika kamu telah menambahkan keduanya maka selanjutnya  cek pada postman menggunakan command berikut:

curl -i -X PUT -H 'Accept: application/json' -H 'Content-type: application/json' http://localhost:3000/jagoan/13 --data '{"name":"Abdul 2", "started_year": 2022, "divisi":"Management 2", "age": 20}'

Setelah berhasil update muncul pesan seperti berikut:

Dan berikut adalah hasil update data dari command yang telah kamu jalankan sebelumnya.


DELETE

Dan terakhir ada fungsi Delete. Seperti dua fungsi sebelumnya, pada fungsi kali ini dapat diawali dengan membuat route management. Caranya cukup mudah yakni dengan cara copy paste syntax berikut ke project kamu.

router.delete('/:id', async function(req, res, next) { try { res.json(await jagoanLanguages.remove(req.params.id)); } catch (err) { console.error(`Error while deleting programming language`, err.message); next(err); } });

Kemudian update juga pada fungsi yang akan menangani endpoint ini

async function remove(id){ const result = await db.query( `DELETE FROM jagoan_api WHERE id=${id}` ); let message = 'Error in deleting data'; if (result.affectedRows) { message = 'Data deleted successfully'; } return {message}; }

Dan untuk melakukan pengetesan fungsi delete, dapat menggunakan command berikut pada postman kamu.

curl -i -X DELETE -H 'Accept: application/json' -H 'Content-type: application/json' http://localhost:3000/jagoan/13

Apabila berhasil, hasilnya seperti dibawah ini:

Data kamu saat ini menjadi seperti di bawah ini:


Dan itulah cara untuk membuat RSET API CRUD sederhana menggunakan Node.js dengan library express.js

Berikut adalah link full code yang dapat kamu download Link

Kalau kamu menemui kesulitan, kamu bisa hubungi tim support kece Jagoan Hosting via livechat atau open tiket dari member area ya Sob. Selamat mencoba!

Related Posts
Tutorial Membuat Akun Email pada cPanel

Halo Sobat Jagoan! Kamu sebagai pelaku bisnis, mahasiswa maupun freelancer pasti membutuhkan email dengan nama domain kamu sehingga kamu bisa Read more

Cara Menambahkan Cron Jobs Yang Tepat di Cpanel Kamu

Hi Sob! tahukah kamu, Cron Jobs digunakan untuk menjadwalkan tugas untuk dijalankan di server. Wah, gimana cara mengoprasikannya? Yuk, kita Read more

Melakukan Restore Menggunakan Backup Acronis

Hai sobat! Pada cPanel memiliki salah satu fitur yang berguna untuk merestore dan mendownload suatu file, database, dll. Jadi Kamu Read more

Cara Membuat Email Account dari Cpanel

Hai sob, di member area Jagoan Hosting, Kamu tak hanya bisa mendapatkan layanan berupa hosting maupun nama domain saja. Tapi Read more

Exit mobile version