首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Node js中使用express-rate-limit框架的API剩余限制

Node js中使用express-rate-limit框架的API剩余限制
EN

Stack Overflow用户
提问于 2020-07-03 16:55:19
回答 1查看 364关注 0票数 0

我正在创建一个api,其中我希望限制对该api的调用数量。我使用Express-rate-limit框架来创建限制。但我也想显示用户的请求数量。

附言:我是Node.js新手

代码语言:javascript
复制
    const rateLimit = require('express-rate-limit');

const rateLimiter = rateLimit({
  windowMs: 1 * 60 * 1000, 
  max: 5,
  statusCode : 403,
  message: 'You have exceeded the 5 requests in 1 min limit!',
  headers: true,
});


router.get("/call_api", checkauth,rateLimiter, async function(req,res,next)  {


    await fetch("http://localhost:8000/get_number", {
        method : "GET",
        // headers: {'Content-Type': 'application/json'},
    })
    .then((response) => response.json()).then((response1) => {
        res.status(200).json({
            number : response1.number
        });
    })

    // res.status(200).json({
    //     message : "Generating a random number"
    // })
  });

router.get("/remaining_limit",checkauth,rateLimiter, (req,res) => {
      res.status(500).json({
          remaining_limits : "You have _ remaining limits" //the number of remaining limits
      });
  })
EN

回答 1

Stack Overflow用户

发布于 2021-02-24 22:14:23

文档引用了一个Request API

req.rateLimit属性添加到具有limitcurrentremaining请求数的所有请求中,如果存储区提供该属性,还会添加一个resetTime Date对象。可以在您的应用程序代码中使用它们来执行其他操作或通知用户它们的状态。

您的/remaining_limit端点可能如下所示:

代码语言:javascript
复制
router.get("/remaining_limit",checkauth,rateLimiter, (req,res) => {
  const remaining = req.rateLimit.remaining;
  res.status(200).json({ 
  // Note that we return 200 OK because the endpoint is working as it should - returning a value
  remaining_limits : `You have ${remaining} remaining limits` // using a template literal
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62711905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档