美文网首页Spring Cloud
三、API安全机制-流控

三、API安全机制-流控

作者: 紫荆秋雪_文 | 来源:发表于2020-05-12 21:03 被阅读0次

    源码下载

    一、API安全机制-流控 API安全机制.png

    • controller
    @Slf4j
    @RestController
    @RequestMapping("/users")
    public class UserController {
    
        @GetMapping("/test")
        public void test() {
            log.info("测试请求- test");
        }
    }
    
    • 流控过滤器
    /**
     * 限流过滤器
     */
    @Component
    public class RateLimitFilter extends OncePerRequestFilter {
    
        /**
         * 限制1秒只能通过1个请求
         */
        private RateLimiter rateLimiter = RateLimiter.create(1);
    
        protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
    
            if (this.rateLimiter.tryAcquire()) {
                filterChain.doFilter(request, response);
            }
            else {
                // 限流
                response.setStatus(HttpStatus.TOO_MANY_REQUESTS.value());
                response.getWriter().write("Too Many Request !!!");
                response.getWriter().flush();
                return;
            }
        }
    }
    
    • 流控效果 请求次数太多.png

    相关文章

      网友评论

        本文标题:三、API安全机制-流控

        本文链接:https://www.haomeiwen.com/subject/xcwinhtx.html