gpt4 book ai didi

java - 在 Java 中限制 Rest API

转载 作者:搜寻专家 更新时间:2023-11-01 01:25:50 24 4
gpt4 key购买 nike

我想添加一种方法来限制来自特定客户端的每个 API 的请求数量。所以,我想基本上限制每个客户端每个 API 的请求数。

我正在使用 DropWizard 作为框架。有人可以推荐实现这一目标的方法吗?我需要一些适用于分布式系统的东西。

最佳答案

一个简单的方法是使用 Filter并将其包装在 web.xml 中的所有 API 调用中。假设您的客户发送 API key 以在 HTTP header 中标识它们,您可以实现如下过滤器:

public class MyThrottlingFilter extends Filter {

public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {

HttpServletRequest httpreq = (HttpServletRequest) req;
String apiKey = httpreq.getHeader("API_KEY")

if (invocationLimitNotReached(apiKey))
chain.doFilter(req, res);
else
throw ...
}
}

然后像这样注册:

<filter>
<filter-name>MyThrottlingFilter</filter-name>
<filter-class>com.my.throttler.MyThrottlingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>MyThrottlingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

当然,如果您使用其他一些身份验证方法,识别您的客户端可能比这更困难,但总体思路应该是相同的。

关于java - 在 Java 中限制 Rest API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29927984/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com