我正在使用Express-throttle限制每天每个IP地址的api调用量。我想根据api请求中的值在“选项”数组中设置“费用”参数。 (请参见代码中的注释“ QUESTION”。)
因此,请求中的参数确定了针对每日最大计数器的api调用费用(通过节流阀可以解决)。问题是,节流阀(选项)作为app.post ..的参数被调用,所以设置它为时已晚?
我该怎么做?我在考虑回调,但不确定如何实现。我试图连续进行2次api调用,但这可能会导致计时问题。请指教。谢谢。
代码:
var throttle = require("express-throttle");
var express = require("express");
var app = express();
var options = {
"burst": 100,
"period": "1d",
// "cost" : 3; <<< This needs to be set to a value from the request.
"on_throttled": function(req, res, next, bucket) {
// Set responsemessage when maximum has been reached.
res.status(503).send("Come back tomorrow.");
}
};
app.get("/throttletest", throttle(options), (req, res, next) => {
// QUESTION : I need to set the "cost" parameter to res.body.userBurst.
res.send("Ok Throttletest");
});
答案 0 :(得分:0)
我现在正在尝试像这样设置它:
var options = {
"burst": 100,
"period": 1d,
"cost": function(req){
var amount = req.body.amount;
return amount;
},
必须先进行测试。