サードパーティのAPIと統合されたNode Express/Angular Civicプロジェクトで作業しています。それぞれの通話は1.00ドルです。私はそれの特定の部分に資金を提供していますが、私は第三者へのPOST要求を停止したいと思います。なぜなら、私は数千ドルのコストで終わらせたくないからです。サードパーティAPIはレート制限をサポートしていません。NodeエクスプレスでPOSTリクエストをカウンタでラップし、エラーをスローします。x
私はデータベースを構築したり、authを作成することができますが、私はそのルートに行くことや支払いゲートウェイを統合したくないです。しかし、私は個人的な理由からこれらのソリューションを好むわけではありません。 IPアドレスごとに制限されている部分的なソリューション/ノードモジュール(高速レート制限)が出てきました。しかし、これは依然として、x回の呼び出しに達した後に要求を停止するという問題を解決しません。
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:あなたの答えに感謝します。実際の例を見せてもらえますか? –
私はちょうどいくつかのコードをドロップすることができますので、いいえ、申し訳ありません私の前にエクスプレスアプリを持って起こることはありません。 (だからこそ、私は答えではなくコメントを投稿した。) –