2017-09-20 141 views
1

我工作的命中公共API很多次的應用程序限制。但是,API有多個速率限制,我的應用程序必須滿足。Node.js的API率多速率限制

速率限制爲 每1秒鐘發出20次請求 AND 每2分鐘發送100次請求。

我一直在尋找一些速率限制的包,但他們似乎只能夠設置一個單一的速率限制。我可以設置速率限制爲每秒20個請求,但後來我可以超過5秒100個做出請求,並違反了第二個限制。我還可以設置速率限制,以每2分鐘100個請求,但將立即違反第一界限。是否有一些軟件可以幫助我達到兩個速率限制?

+0

難道你必須經常打它儘可能的要求? – Deadron

+1

我認爲限制的時間的函數可以被稱爲與該邏輯可以與5行的代碼來實現的數量。爲什麼要爲此目的建立一個已建好的庫? – lilezek

+0

@Deadron一個用戶需要打api大約50次,所以如果你只是想將速率限制設置爲每秒5/6個請求(以符合第一個和第二個標準),那麼這也需要長。 – Andrew

回答

1

如果使用this express middleware,你可以設置2個限制線沿線的:

var RateLimit = require('express-rate-limit'); 

var apiLimiterSeconds = new RateLimit({ 
    windowMs: 1, // 1 second 
    max: 20, 
    delayMs: 0 // disabled 
}); 

var apiLimiterMinutes = new RateLimit({ 
    windowMs: 2*60, // 2 minutes 
    max: 100, 
    delayMs: 0 // disabled 
}); 

// only apply to requests that begin with /api/ 
app.use('/api/', apiLimiterSeconds); 
app.use('/api/', apiLimiterMinutes); 
+0

謝謝,它看起來像這樣將工作。我早些時候看到了這個軟件包,但並沒有想到要在我的應用程序中應用幾個速率限制 – Andrew