Skip to content

[Phase5] Issue #7: RateLimitFilter 구현 #7

Description

@724thomas

Phase 목표: Servlet Filter 구현

목표: OncePerRequestFilter 기반 Rate Limiting 필터 구현

작업 내용

  • RateLimitFilter 클래스 구현 (OncePerRequestFilter 상속)
  • doFilterInternal() 메소드 구현
  • UserIdExtractor와 RateLimiterFactory 연동
  • Rate Limit 체크 및 분기 처리
  • 429 에러 응답 생성 로직

완료 기준

  • 모든 HTTP 요청에 대해 Rate Limiting 적용
  • 사용자 ID 추출 및 알고리즘 선택 자동화
  • Rate Limit 초과 시 올바른 429 응답
  • 허용된 요청의 정상적인 다음 필터 전달

핵심 로직

  1. 사용자 ID 추출 (UserIdExtractor)
  2. Rate Limiter 선택 (RateLimiterFactory)
  3. Rate Limit 체크 (allowRequest())
  4. 결과에 따른 분기 처리:
    • true: filterChain.doFilter() 호출
    • false: 429 응답 생성

응답 헤더

  • X-RateLimit-Limit: 제한 수
  • X-RateLimit-Remaining: 남은 요청 수
  • Retry-After: 재시도 가능 시간

파일 위치

  • src/main/java/com/example/demo/ratelimiter/filter/RateLimitFilter.java
  • src/test/java/com/example/demo/ratelimiter/filter/RateLimitFilterTest.java

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions