Lompat ke konten Lompat ke sidebar Lompat ke footer

Membuat REST API dengan JavaScript Menggunakan Express.js dan Laragon



Pada tutorial kali ini kita akan belajar membuat REST API menggunakan JavaScript dengan Express.js.

Kita akan membuat REST API sederhana yang dapat digunakan untuk:

  • Menampilkan data

  • Menambahkan data

  • Mengubah data

  • Menghapus data

Untuk menjalankan project, kita akan menggunakan Laragon sebagai local development environment dan Node.js + Express.js sebagai teknologi utama.

Tutorial ini cocok untuk pemula yang ingin mulai belajar membuat Backend API menggunakan JavaScript.


1. Apa Itu REST API?

REST API adalah sebuah mekanisme yang memungkinkan aplikasi saling berkomunikasi menggunakan protokol HTTP.

Contohnya, kita memiliki aplikasi:

Frontend
   |
   | Request
   v
REST API
   |
   v
Database

Frontend dapat meminta data kepada REST API.

Misalnya:

GET /api/products

Kemudian server akan memberikan response dalam format JSON:

[
    {
        "id": 1,
        "name": "Laptop",
        "price": 7500000
    },
    {
        "id": 2,
        "name": "Mouse",
        "price": 150000
    }
]

REST API biasanya menggunakan beberapa HTTP Method utama:

MethodFungsi
GETMengambil data
POSTMenambahkan data
PUTMengubah data
DELETEMenghapus data

2. Tools yang Digunakan

Pada tutorial ini kita menggunakan beberapa tools:

  • Laragon

  • Node.js

  • Express.js

  • Visual Studio Code

  • Postman

Laragon akan kita gunakan sebagai environment development di komputer lokal.

Node.js digunakan untuk menjalankan JavaScript di sisi server.

Express.js digunakan sebagai framework untuk membuat REST API.

Postman digunakan untuk melakukan testing API.


3. Install Laragon

Silakan install Laragon terlebih dahulu.

Setelah Laragon berhasil di-install, jalankan aplikasi Laragon.

Pada tutorial ini kita tidak menggunakan Apache atau Nginx sebagai web server utama untuk API.

Express.js akan menjalankan server menggunakan Node.js.

Struktur sederhananya:

Laragon
└── www
    └── belajar-api

4. Cek Node.js

Sebelum membuat project, kita perlu memastikan Node.js sudah tersedia.

Buka Terminal / PowerShell kemudian jalankan:

node -v

Contohnya:

v22.14.0

Kemudian cek npm:

npm -v

Jika versi Node.js dan npm muncul, berarti Node.js sudah siap digunakan.


5. Membuat Project REST API

Masuk ke folder www milik Laragon.

Biasanya berada di:

C:\laragon\www

Kemudian buka terminal pada folder tersebut.

Jalankan:

mkdir belajar-api

Masuk ke folder:

cd belajar-api

Kemudian buat project Node.js:

npm init -y

Perintah tersebut akan membuat file:

package.json

File tersebut digunakan untuk menyimpan konfigurasi dan dependency project Node.js.


6. Install Express.js

Sekarang kita install Express.js.

Jalankan:

npm install express

Setelah proses selesai, akan muncul folder:

node_modules

dan file:

package-lock.json

Struktur project sekarang:

belajar-api
│
├── node_modules
├── package-lock.json
└── package.json

7. Membuat File Server

Buat file baru bernama:

server.js

Sehingga struktur project menjadi:

belajar-api
│
├── node_modules
├── package-lock.json
├── package.json
└── server.js

Kemudian buka file server.js.

Masukkan kode berikut:

const express = require('express');

const app = express();

const PORT = 3000;

// Middleware untuk membaca JSON
app.use(express.json());

// Route utama
app.get('/', (req, res) => {
    res.json({
        message: 'REST API berhasil dijalankan'
    });
});

// Menjalankan server
app.listen(PORT, () => {
    console.log(`Server berjalan di http://localhost:${PORT}`);
});

8. Menjalankan REST API

Sekarang kita jalankan server.

Pada terminal jalankan:

node server.js

Jika berhasil, akan muncul:

Server berjalan di http://localhost:3000

Sekarang buka browser:

http://localhost:3000

Response:

{
    "message": "REST API berhasil dijalankan"
}

Selamat, REST API pertama kita sudah berhasil dibuat.


9. Membuat Endpoint GET

Sekarang kita akan membuat API untuk menampilkan data product.

Tambahkan kode berikut pada server.js:

const products = [
    {
        id: 1,
        name: 'Laptop',
        price: 7500000
    },
    {
        id: 2,
        name: 'Mouse',
        price: 150000
    },
    {
        id: 3,
        name: 'Keyboard',
        price: 350000
    }
];

app.get('/api/products', (req, res) => {
    res.json(products);
});

Sekarang akses:

http://localhost:3000/api/products

Response:

[
    {
        "id": 1,
        "name": "Laptop",
        "price": 7500000
    },
    {
        "id": 2,
        "name": "Mouse",
        "price": 150000
    },
    {
        "id": 3,
        "name": "Keyboard",
        "price": 350000
    }
]

10. Membuat Endpoint GET Berdasarkan ID

Selain menampilkan seluruh product, kita juga dapat mengambil satu product berdasarkan ID.

Tambahkan:

app.get('/api/products/:id', (req, res) => {

    const id = parseInt(req.params.id);

    const product = products.find(item => item.id === id);

    if (!product) {
        return res.status(404).json({
            message: 'Product tidak ditemukan'
        });
    }

    res.json(product);
});

Sekarang coba akses:

http://localhost:3000/api/products/1

Response:

{
    "id": 1,
    "name": "Laptop",
    "price": 7500000
}

Jika ID tidak ditemukan:

http://localhost:3000/api/products/99

Response:

{
    "message": "Product tidak ditemukan"
}

HTTP Status yang diberikan adalah:

404 Not Found

11. Membuat Endpoint POST

Sekarang kita akan membuat endpoint untuk menambahkan product baru.

Tambahkan:

app.post('/api/products', (req, res) => {

    const { name, price } = req.body;

    const newProduct = {
        id: products.length + 1,
        name: name,
        price: price
    };

    products.push(newProduct);

    res.status(201).json({
        message: 'Product berhasil ditambahkan',
        data: newProduct
    });
});

Karena kita menggunakan:

app.use(express.json());

Express dapat membaca data JSON yang dikirim melalui request body.

Contoh JSON:

{
    "name": "Monitor",
    "price": 2500000
}

12. Testing POST Menggunakan Postman

Buka Postman.

Pilih:

POST

Kemudian masukkan URL:

http://localhost:3000/api/products

Pilih:

Body
→ raw
→ JSON

Masukkan:

{
    "name": "Monitor",
    "price": 2500000
}

Klik Send.

Response:

{
    "message": "Product berhasil ditambahkan",
    "data": {
        "id": 4,
        "name": "Monitor",
        "price": 2500000
    }
}

13. Membuat Endpoint PUT

Selanjutnya kita membuat API untuk mengubah product.

Tambahkan:

app.put('/api/products/:id', (req, res) => {

    const id = parseInt(req.params.id);

    const product = products.find(item => item.id === id);

    if (!product) {
        return res.status(404).json({
            message: 'Product tidak ditemukan'
        });
    }

    const { name, price } = req.body;

    product.name = name;
    product.price = price;

    res.json({
        message: 'Product berhasil diubah',
        data: product
    });
});

Kemudian pada Postman pilih:

PUT

URL:

http://localhost:3000/api/products/1

Body:

{
    "name": "Laptop Gaming",
    "price": 12500000
}

Response:

{
    "message": "Product berhasil diubah",
    "data": {
        "id": 1,
        "name": "Laptop Gaming",
        "price": 12500000
    }
}

14. Membuat Endpoint DELETE

Sekarang kita membuat API untuk menghapus product.

Tambahkan:

app.delete('/api/products/:id', (req, res) => {

    const id = parseInt(req.params.id);

    const index = products.findIndex(item => item.id === id);

    if (index === -1) {
        return res.status(404).json({
            message: 'Product tidak ditemukan'
        });
    }

    const deletedProduct = products.splice(index, 1);

    res.json({
        message: 'Product berhasil dihapus',
        data: deletedProduct[0]
    });
});

Pada Postman pilih:

DELETE

Kemudian:

http://localhost:3000/api/products/3

Klik Send.

Response:

{
    "message": "Product berhasil dihapus",
    "data": {
        "id": 3,
        "name": "Keyboard",
        "price": 350000
    }
}

15. REST API CRUD Lengkap

Sampai tahap ini kita sudah mempunyai API CRUD.

Endpoint yang kita buat:

MethodEndpointFungsi
GET/api/productsMenampilkan semua product
GET/api/products/:idMenampilkan product berdasarkan ID
POST/api/productsMenambahkan product
PUT/api/products/:idMengubah product
DELETE/api/products/:idMenghapus product

Secara sederhana alurnya:

GET
    ↓
Menampilkan data

POST
    ↓
Menambahkan data

PUT
    ↓
Mengubah data

DELETE
    ↓
Menghapus data

16. Full Code server.js

Berikut adalah kode lengkap yang sudah kita buat:

const express = require('express');

const app = express();

const PORT = 3000;

// Middleware
app.use(express.json());

// Data sementara
const products = [
    {
        id: 1,
        name: 'Laptop',
        price: 7500000
    },
    {
        id: 2,
        name: 'Mouse',
        price: 150000
    },
    {
        id: 3,
        name: 'Keyboard',
        price: 350000
    }
];

// GET /
app.get('/', (req, res) => {
    res.json({
        message: 'REST API berhasil dijalankan'
    });
});

// GET semua product
app.get('/api/products', (req, res) => {
    res.json(products);
});

// GET product berdasarkan ID
app.get('/api/products/:id', (req, res) => {

    const id = parseInt(req.params.id);

    const product = products.find(item => item.id === id);

    if (!product) {
        return res.status(404).json({
            message: 'Product tidak ditemukan'
        });
    }

    res.json(product);
});

// POST product
app.post('/api/products', (req, res) => {

    const { name, price } = req.body;

    const newProduct = {
        id: products.length + 1,
        name: name,
        price: price
    };

    products.push(newProduct);

    res.status(201).json({
        message: 'Product berhasil ditambahkan',
        data: newProduct
    });
});

// PUT product
app.put('/api/products/:id', (req, res) => {

    const id = parseInt(req.params.id);

    const product = products.find(item => item.id === id);

    if (!product) {
        return res.status(404).json({
            message: 'Product tidak ditemukan'
        });
    }

    const { name, price } = req.body;

    product.name = name;
    product.price = price;

    res.json({
        message: 'Product berhasil diubah',
        data: product
    });
});

// DELETE product
app.delete('/api/products/:id', (req, res) => {

    const id = parseInt(req.params.id);

    const index = products.findIndex(item => item.id === id);

    if (index === -1) {
        return res.status(404).json({
            message: 'Product tidak ditemukan'
        });
    }

    const deletedProduct = products.splice(index, 1);

    res.json({
        message: 'Product berhasil dihapus',
        data: deletedProduct[0]
    });
});

// Menjalankan server
app.listen(PORT, () => {
    console.log(`Server berjalan di http://localhost:${PORT}`);
});

17. Struktur Project

Setelah tutorial ini selesai, struktur project kita menjadi:

belajar-api
│
├── node_modules
│
├── package-lock.json
│
├── package.json
│
└── server.js

Untuk tahap awal struktur seperti ini sudah cukup.

Namun jika project semakin besar, sebaiknya struktur aplikasi dipisahkan menjadi beberapa bagian.

Contohnya:

belajar-api
│
├── node_modules
│
├── src
│   ├── controllers
│   ├── routes
│   ├── models
│   └── middleware
│
├── package.json
│
└── server.js

Struktur tersebut akan membuat project lebih mudah dikembangkan.


18. Kesimpulan

Pada tutorial ini kita sudah belajar membuat REST API menggunakan JavaScript dan Express.js.

Kita sudah berhasil membuat:

  • Express.js project

  • REST API server

  • GET API

  • GET API berdasarkan ID

  • POST API

  • PUT API

  • DELETE API

  • Testing API menggunakan Postman

Untuk sementara data product masih disimpan di dalam array JavaScript sehingga ketika server dimatikan, data akan kembali seperti semula.

Pada tutorial berikutnya kita dapat mengembangkan project ini dengan menggunakan database MySQL sehingga data dapat disimpan secara permanen.

Contoh arsitekturnya:

Frontend
   │
   │ HTTP Request
   ▼
Express.js REST API
   │
   │ SQL Query
   ▼
MySQL Database

Dengan konsep tersebut, Express.js dapat digunakan sebagai backend untuk berbagai aplikasi seperti:

  • Sistem Inventory

  • Point of Sale

  • Task Management

  • Sistem Rumah Sakit

  • E-Commerce

  • Dashboard

  • Mobile App

  • Web Application

Posting Komentar untuk "Membuat REST API dengan JavaScript Menggunakan Express.js dan Laragon"