Framework/Spring Boot

bucket4j를 이용한 요청 횟수 제한

잔망루피 2024. 5. 11. 22:31

☀️ bucket4j 의존성 추가

implementation 'com.bucket4j:bucket4j-core:8.10.1'

 

 

🐒 1분에 최대 3번의 요청을 받을 수 있도록 설정

@Configuration
public class BucketConfig {
    @Bean
    public Bucket bucket() {

        final Refill refill = Refill.intervally(3, Duration.ofSeconds(60));

        final Bandwidth limit = Bandwidth.classic(3, refill);

        return Bucket.builder().addLimit(limit).build();
    }
}

 

 

🍔 API 호출 시 1씩 차감

  • 제한된 요청 횟수를 넘기면 429 에러가 뜨도록 했다.
    @PostMapping("/auth")
    public ResponseEntity<?> authenticate(@Valid @RequestBody final OTPRequest otpRequest) {
        if (!bucket.tryConsume(1)) {
            return ResponseEntity.status(HttpStatus.TOO_MANY_REQUESTS).build();
        }
        return ResponseEntity.ok().body(watchService.authenticate(otpRequest));
    }
반응형