Я работаю над проектом Node Express/Angular Civic, который интегрирован с сторонним API. Каждый звонок стоит мне 1,00 долларов. Я финансирую определенную часть, но тогда я хотел бы, чтобы запрос POST третьей стороне остановился. Причина в том, что я не хочу тратить тысячи долларов. Сторонний API не поддерживает ограничение скорости.Узел Express завершает запрос POST с помощью счетчика и выдаёт ошибку после x
Я могу создать базу данных или создать auth, но я предпочитаю не идти по этому маршруту или не интегрировать платежный шлюз. Но я не предпочитаю ни одно из этих решений по личным причинам. Я столкнулся с частичным решением/узлом-модулем (ограничение скорости передачи), которое ограничивает IP-адрес. Но это все еще не решает проблему остановки запросов после того, как она достигнет количества звонков.
var RateLimit = require('express-rate-limit');
app.enable('trust proxy'); // only if you're behind a reverse proxy (Heroku, Bluemix, AWS if you use an ELB, custom Nginx setup, etc)
var apiLimiter = new RateLimit({
windowMs: 15*60*1000, // 15 minutes
max: 1, // 1 call every 15 minutes
delayMs: 0 // disabled
});
// only apply to requests that begin with /api/
app.use('/api/', apiLimiter);
Есть ли лучшие решения/лучшие практики? Это просто побочный проект, который может помочь нескольким людям, но я не хочу ломаться, неся расходы, если многие начнут его использовать. Благодаря!
код [экспресс-скорость-кода предела] (https://github.com/nfriedly/express-rate-limit/blob/master/lib/express-rate-limit.js) является * супер * просто. Конечно, вы могли бы приспособить его к вашим потребностям. Просто изменение функции 'keyGenerator' для возврата некоторой константы (вместо IP-адреса) кажется, что оно должно работать. –
@jordan: Благодарю вас за ответ. Не возражаете ли вы показывать рабочий пример? –
У меня, похоже, нет явного приложения, чтобы я мог просто вставить код, поэтому нет, извините. (Вот почему я разместил комментарий, а не ответ.) –