Express-throttle как установить стоимость вызова API на основе аргумента для функции - PullRequest
1 голос
/ 18 июня 2019

Я использую экспресс-газ, чтобы ограничить количество вызовов API на IP-адрес в день.Я хочу установить параметр «стоимость» в массиве «параметры» на основе значения в запросе API.(см. комментарий «ВОПРОС» в коде).

Таким образом, параметр в запросе определяет стоимость вызова API по отношению к счетчику максимального значения в день (дроссель позаботится об этом).Проблема в том, что throttle (options) вызывается в качестве аргумента 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");

});

1 Ответ

0 голосов
/ 18 июня 2019

Я сейчас пытаюсь установить его так:

var options = {
  "burst": 100,
  "period": 1d,
  "cost": function(req){
    var amount = req.body.amount;
    return amount;
  },

Сначала нужно проверить.

...