我有一个基于Sprint Boot (v1.5.15) 的Restful应用程序,提供基于用户的服务,特别是登录和获取用户详细信息。
登录活动稍微有点繁重,而获取用户详细信息的api非常轻量级。
我有一个类似于这样的控制器:
@RestController
public class UserController{
@PostMapping("/login")
public LoginResponse userLogin(@RequestBody LoginRequest loginRequest){
...
}
@GetMapping("/users/{id}")
public LoginResponse userIdGet(@PathVariable("id") String id){
...
}
}
有没有办法限制对
/login
api 的并发调用次数呢?基本上,我想将其限制为 x 次,而 /users/{id}
可以在相同的资源上处理大约 10 倍于那些调用的数量。该应用程序使用嵌入式 Tomcat 服务器,我知道有
server.tomcat.max-connections
、server.tomcat.max-threads
和 server.tomcat.min-spare-threads
这些设置,但这些设置只能在应用程序级别上限制调用,而不能在 API 级别上实现。
counter > MaxAllowed
时返回HTTP错误代码。 - user10639668