如果您需要根据所有请求的聚合来限制对特定资源的访问,我将创建一个单独的 http 服务来封装和控制对该资源的所有访问。
假设您使用的是 express 并且您的应用程序在端口 80 上运行,如下所示:
var express=require('express'),
app=express();
app.get(route,function(req,res){
... do things here that need access to the FB Graph API
});
app.listen(80);
我将以下行添加到您的 app.js,创建一个在端口 8080 上运行的新服务器:
var fbApiGatewayApp=express();
fbApiGatewayApp.get('/fb',function(req,res){
... provide access to FB Graph API here
});
fbApiGatewayApp.listen(8080);
您为其创建的路由控制对 FB API 的访问。
重构您的原始应用程序,使其仅在需要向 FB API 提交请求时调用此新网关服务上的路由(通过 http.js)。
然后,您可以对这项新服务进行速率限制以满足 FB 的要求。
我还会让它拒绝所有不是来自您的主应用程序(在 localhost - 127.0.0.1 上运行)的请求,以限制来自外界的访问。(同样可以使用防火墙来完成。)