📜  Node.js 中的 Express-rate-limit 是什么?

📅  最后修改于: 2022-05-13 01:56:26.708000             🧑  作者: Mango

Node.js 中的 Express-rate-limit 是什么?

Node.js 是基于 Chrome 的 V8 JavaScript 引擎构建的开源和跨平台运行时环境,用于在浏览器之外执行 JavaScript 代码。您需要记住 NodeJS 不是框架,也不是编程语言。它提供了一个事件驱动、非阻塞(异步)I/O 和跨平台运行时环境,用于使用 JavaScript 构建高度可扩展的服务器端应用程序。

在本文中,我们将了解 Express-Rate 限制。

快速速率限制:速率限制可防止同一 IP 地址发出过多请求,这将有助于我们防止诸如暴力破解之类的攻击。

所需依赖:

npm install express-rate-limit

项目设置:运行以下命令集以创建文件夹并初始化项目。

mkdir test-project
cd test-project
npm init -y

项目结构:

示例:在 App.js 文件中编写以下代码。

Javascript
// Express is node framework that helps
// in setting up the server and routing.
const express = require("express");
  
// The express-rate-limit is for
// limiting the incoming request.
const rateLimit = require("express-rate-limit");
  
// App variable store the express module.
const app = express();
  
// Creating a limiter by calling rateLimit function with options:
// max contains the maximum number of request and windowMs
// contains the time in millisecond so only max amount of
// request can be made in windowMS time.
const limiter = rateLimit({
    max: 200,
    windowMs: 60 * 60 * 1000,
    message: "Too many request from this IP"
});
  
// Add the limiter function to the express middleware
// so that every request coming from user passes
// through this middleware.
app.use(limiter);
  
// GET route to handle the request coming from user
app.get("/", (req, res) => {
    res.status(200).json({
        status: "success",
        message: "Hello from the GeeksforGeeks express server"
    });
});
  
// Server Setup
const port = 8000;
app.listen(port, () => {
    console.log(`app is running on port ${port}`);
});


运行应用程序的步骤:在终端中运行以下命令:

node app.js

输出:我们将在终端屏幕上看到以下输出。

app is running on http://localhost:8000/
  • 当请求没有超过速率限制器的最大限制时输出:

  • 当请求超过速率限制器的最大限制时输出: