Rate Limiting API di Node.js Express

Cara Membuat Rate Limiting API di Node.js Express

Rate Limiting dapat memungkinkan untuk mengamankan backend API dari serangan yang berbahaya dengan cara membatasi jumlah permintaan yang dapat dilakukan pengguna.

Banyak sekali penyedia API yang menerapkan Rate Limiting. Sebagai contoh yaitu membatasi jumlah permintaan yang dapat dibuat oleh pengguna yang tidak berlangganan dalam durasi tertentu dan membatasi pengguna dengan akun development hanya 200 request per hari.

Dengan menerapkan Rate Limiting dapat secara efektif mengelola sumber daya dan memastikan penggunaan API yang adil oleh pengguna atau aplikasi yang berbeda.

Untuk lebih jelasnya lagi kalian bisa baca artikel berikut ini tentang Rate Limiting.

Mempersiapkan Proyek Node.js

Pastikan Anda memiliki Node.js terinstal di sistem Anda. Jika belum, Anda dapat mengunduhnya dari situs resmi Node.js.

Setelah Node.js terinstal, buat folder proyek baru dan inisialisasi proyek Node.js menggunakan perintah berikut melalui terminal atau command prompt:

mkdir rate-limiter
cd rate-limiter
npm init -y

Menginstal Library

Langkah selanjutnya yaitu kita akan mengisntal library yang dibutuhkan pada proyek node.js kita, adapun library yang akan kita gunakan adalah express dan express-rate-limit. Berikut ini perintah untuk menginstal libary tersebut kalian bisa jalankan di terminal.

npm install express express-rate-limit

Kemudian kita buat file baru dengan nama index.js dan kita panggil library yang sudah kita instal tadi seperti berikut ini.

const express = require("express");
const indexRoute = require("./routes");
const rateLimit = require("express-rate-limit");
const app = express();

Membuat Rate Limit

Selanjutnya kita akan buat rate limit untuk API data yang kita buat. Silahkan buka file index.js kemudian tambahkan kode berikut.

const port = 8000;

app.use(
  rateLimit({
    windowMs: 10 * 60 * 1000,
    max: 5,
    message: "You exceeded 5 requests in 10 minutes!",
    headers: true,
  })
);

app.use("/items", indexRoute);

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`);
});

Kode diatas akan membuat route posts untuk menampilkan data item. Nahh jika pengguna ingin mengakses API yang kita buat ini dibatasi dengan maksimal 5 kali request ke API, apabila lebih dari 5 kali maka pengguna tidak bisa mengakses API selama 10 menit.

Untuk batas maksimal request API bisa kalian ganti di bagaian “max :” di sesuaikan dengan kebutuhan kalian. Sedangkan untuk waktu tunggu jika pengguna melebih request API dapat kalian ubah juga sesau kebutuhan di bagian “windowMs ;”

Jadi sekarang untuk file index.js secara keseluruhan seperti berikut ini,

const express = require("express");
const indexRoute = require("./routes");
const rateLimit = require("express-rate-limit");
const app = express();

const port = 8000;

app.use(
  rateLimit({
    windowMs: 10 * 60 * 1000,
    max: 5,
    message: "You exceeded 5 requests in 10 minutes!",
    headers: true,
  })
);

app.use("/items", indexRoute);

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`);
});

Membuat Route Item

Baik, untuk langkah selanjutnya silahkan buat file baru dengan nama routes.js kemudian copy kode berikut ini.

const { json } = require("express");
const express = require("express");
const router = express.Router();
const items = [
  {
    id: 1,
    item: "item A",
    qty: 23,
  },

  {
    id: 2,
    item: "item B",
    qty: 34,
  },

  {
    id: 3,
    item: "item C",
    qty: 3,
  },

  {
    id: 4,
    item: "item D",
    qty: 43,
  },
];

router.get("/", function (req, res, next) {
  res.json(items);
});

module.exports = router;

Kode di atas akan menampilkan item ketika pengguna mengakses dengan url “/items” adapun items yang ditampilkan yaitu dari data yang terdapat pada array items.

Kesimpulan

Pada tutorial ini kita telah membuat Rate Limiting pada API yang dibuat dengan Node.js Express. Dengan menerapkan Rate Limiting ini dapat mencegah API kita dari serangan yang berbahaya.

Dengan membatasi jumlah permintaan dapat meminimalisir dari penyerangan yang berbahaya misalkan dari penyerangan yang menggunakan bot untuk membuat begitu banyak panggilan berulang ke API sehingga membuat layanan tidak tersedia untuk orang lain, atau menghentikan layanan sama sekali.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top