[스프링] 스프링 클라우드 게이트웨이 필터링과 전처리

이번 글에서는 스프링 클라우드 게이트웨이 필터링과 전처리에 대해 알아보겠습니다.

1. 스프링 클라우드 게이트웨이 필터

게이트웨이 필터는 GatewayFilterGlobalFilter 두 가지 타입이 있습니다. GatewayFilter는 특정 라우트에만 적용되는 필터이며 GlobalFilter는 모든 라우트에 적용되는 필터입니다.

@Component
public class CustomFilter implements GlobalFilter {
    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        // 필터링 로직 구현
        return chain.filter(exchange);
    }
}

위 예제에서 CustomFilterGlobalFilter를 구현한 클래스로, filter 메서드에서 필터링 로직을 구현합니다.

2. 전처리 작업

게이트웨이 필터를 사용하여 클라이언트 요청에 대한 전처리 작업을 수행할 수 있습니다. 예를 들어 인증, 권한 부여, 요청 로깅 등의 작업을 게이트웨이 필터를 통해 처리할 수 있습니다.

아래는 클라이언트 요청에 대한 전처리 작업을 수행하는 간단한 예제입니다.

@Component
public class AuthFilter implements GlobalFilter {
    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        if (!exchange.getRequest().getHeaders().containsKey("Authorization")) {
            exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);
            return exchange.getResponse().setComplete();
        }
        return chain.filter(exchange);
    }
}

위 예제에서 AuthFilter는 클라이언트 요청에 Authorization 헤더가 없을 경우 401 Unauthorized 상태코드로 응답하는 전처리 필터를 구현한 것입니다.

3. 게이트웨이 필터링 설정

게이트웨이 필터는 빈으로 등록하여 설정할 수 있습니다. 필터의 우선 순위, 적용 조건 등을 설정하여 게이트웨이 필터링을 정밀하게 제어할 수 있습니다.

spring:
  cloud:
    gateway:
      routes:
        - id: example-route
          uri: http://example.com
          predicates:
            - Path=/example
          filters:
            - name: CustomFilter
            - name: AuthFilter

위 YAML 설정에서 CustomFilterAuthFilterexample-route에 적용되도록 설정되어 있습니다.

이렇게하여, 스프링 클라우드 게이트웨이를 사용하면 게이트웨이 필터를 통해 클라이언트 요청에 대한 전처리 작업을 유연하게 처리할 수 있습니다.

더 많은 정보를 원하시면 공식 문서를 참고하시기 바랍니다.