我正在开发一个 Spring Boot Rest API,它处理大量传入的请求调用。我的 Controller 如下所示:
@RestController
public class ApiController {
List<ApiObject> apiDataList;
@RequestMapping(value="/data",produces={MediaType.APPLICATION_JSON_VALUE},method=RequestMethod.GET)
public ResponseEntity<List<ApiObject>> getData(){
List<ApiObject> apiDataList=getApiData();
return new ResponseEntity<List<ApiObject>>(apiDataList,HttpStatus.OK);
}
@ResponseBody
@Async
public List<ApiObject> getApiData(){
List<ApiObject> apiDataList3=new List<ApiObject> ();
//do the processing
return apiDataList3;
}
}
所以现在我想为每个用户设置一个速率限制。假设每个用户每分钟只能请求 5 个请求或类似的请求。如何将每个用户的速率限制设置为每分钟仅进行 5 次 api 调用,如果用户请求的次数超过此次数,我可以发回 429 响应?我们需要他们的 IP 地址吗?
任何帮助表示赞赏。
最佳答案
您在 Spring 中没有该组件。
关于java - 如何在 Spring Boot 中为每个用户设置速率限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44042412/