我一直在阅读Jersey 2.17用户指南,了解在公开的RESTLet资源上应用治理限制的可能性。我特别感兴趣的是对特定客户端消费者的特定Jersey RESTLet资源的传入请求应用限制(例如:我希望每30秒允许来自任何特定源的10个请求)。
如果有人根据他们在原生API功能方面的经验,是否有可行的方法,请告诉我。提前谢谢!
答案 0 :(得分:1)
使用Restlet实现此目的的方法是使用APISpark extension。
这个类似的问题应该回答你的问题: Limit request on a Restlet resource with APISpark restlet extension
你可以做这样的事情:
FirewallRule rule = new PeriodicFirewallCounterRule(60, TimeUnit.SECONDS, new IpAddressCountingPolicy());
((PeriodicFirewallCounterRule)rule).addHandler(new RateLimitationHandler(new UniqueLimitPolicy(10)));
FirewallFilter firewallFiler = new FirewallFilter(getContext(), list(rule));
firewallFiler.setNext(router);
限制对应用的Restlet服务器资源的访问。我希望这有助于或至少给你一个提示。