我想根據他的計劃限制用戶的 API 請求。為此,我在這里使用 router.use() 功能。我只想問這是正確的方法,否則即使這樣做了,我的 api 也不支持并發請求。如果它是錯誤的,請建議我正確的方法。
這是我的代碼:
router.get("requestURL" , async(req,res) => {
if (user.plan == "PLANTYPE") {
if (user.requests < user.quota) {
const limiter = rateLimit({
windowMs: 1, // 1 sec
max: user.concurrency,
standardHeaders: true,
legacyHeaders: false,
});
router.use(limiter);
}
}
})
uj5u.com熱心網友回復:
我們可以使用函式來定義max值。
我認為可以這樣實作
const express = require('express')
const rateLimit = require('express-rate-limit')
const app = express()
const PORT = 3000
// Create a function to define the max limit
const getUserConcurrency = async (user) => {
if (user.plan == "PLANTYPE" && user.requests < user.quota) {
return user.concurrency
}
}
// Setup the rate limiter
const limiter = rateLimit({
windowMs: 1,
max: async (request, response) => {
return await getUserConcurrency(request.user)
},
standardHeaders: true,
legacyHeaders: false,
})
// Pass the rate-limit in the get request
app.get('requestURL', limiter, function (req, res) {
return res.send('Hello World')
})
app.listen(PORT, () => {
console.log(`server started on port ${PORT}`)
})
有關更多詳細資訊,您可以在此處查看他們的檔案
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/491270.html
上一篇:SocketIO:什么時候用io,什么時候用socket?
下一篇:Postgres按行分組查詢結果
