首页 > 解决方案 > 使用spring的rest api的速率限制

问题描述

我想为 rest API 实现速率限制功能。翻遍了所有文章,貌似没有spring直接提供的限速api。

但是有 2 个库提供速率限制功能:

1) bucket4j-spring-boot-starter

2) weddini/spring-boot-throttling

现在我有一个非常愚蠢的问题。如何验证这些 API 是否属于 Spring 框架本身并旨在保护 Spring MVC 上的 rest API 或者这些是使用 spring 开发的 3rd 方库。

我们的主要目标是使用 spring 框架及其提供的功能。并避免使用 3rd 方库。

我关注了有关 stackoverflow 的许多问题,并在 Google 上搜索了有关该主题的其他文章。他们中的一些人提到“spring 没有提供开箱即用的功能”。但我想知道 spring 提供了哪些基本功能。我们不是在寻找任何开箱即用的解决方案,任何基本的解决方案也可以。

参考问题:如何在 Spring Boot 中为每个用户设置速率限制?

标签: javaspringspring-bootrate-limiting

解决方案


现在我有一个非常愚蠢的问题。如何验证这些 API 是否属于 Spring 框架本身并旨在保护 Spring MVC 上的 rest API 或者这些是使用 spring 开发的 3rd 方库。

您可以轻松检查它们的依赖关系...

<dependency>
    <groupId>com.giffing.bucket4j.spring.boot.starter</groupId>
    <artifactId>bucket4j-spring-boot-starter-context</artifactId>
    <version>0.1.15</version>
</dependency>

虽然所有 spring 依赖项都有这个 groupId

<groupId>org.springframework.boot</groupId>

你甚至可以在这里找到作者

https://github.com/MarcGiffing/bucket4j-spring-boot-starter

但我想知道 spring 提供了哪些基本功能。

这是一个非常广泛的话题,但简单来说:

  • 您可以通过获取令牌或您正在使用的任何其他身份验证的信息来检查谁在请求端点。

  • 您可以将该信息存储在数据库中(是否在内存中)并检查它以验证用户仍然有更多允许的请求

  • 您可以根据这些参数拒绝呼叫

都是spring支持的


推荐阅读