필터 적용 및 Spring Cloud Gateway에서 사용자 정의 필터 생성

날아올라돼지야·2024년 8월 28일
0

Spring Cloud Gateway에서 다중 필터를 적용하는 방법과 사용자 정의 필터를 추가하는 방법을 알아보겠습니다.

1. 기본 경로 Predicate 및 필터 설명:

  • Path Predicate: 클라이언트 요청 경로가 지정된 경로와 일치하는지 확인합니다. 경로가 일치할 경우, 필터를 적용하고 실제 마이크로서비스로 요청을 전달합니다.
  • Rewrite Path Filter: 요청 경로를 재작성하여 실제 마이크로서비스로 전달하기 전에 경로를 수정합니다. 예를 들어, easybank/accounts/**와 같은 경로가 들어오면, 해당 경로를 재작성한 후, 실제 마이크로서비스로 전달합니다.

2. 다중 필터 적용:

  • Spring Cloud Gateway는 여러 필터를 사용할 수 있습니다. 예를 들어, 응답에 추가 헤더를 포함시키는 필터를 적용할 수 있습니다.
  • AddResponseHeader 필터를 사용하여 응답에 X-Response-Time 헤더를 추가하여 응답이 생성된 시간을 클라이언트에게 전달할 수 있습니다.

3. Spring Cloud Gateway 공식 문서 참조:

  • 공식 문서를 통해 Spring Cloud Gateway에서 제공하는 다양한 필터와 프레디케이트를 확인할 수 있습니다. 이러한 문서를 통해 필요한 필터를 선택하고 구현할 수 있습니다.
  • AddResponseHeader와 같은 사전 정의된 필터는 공식 문서에서 확인할 수 있으며, 이러한 필터를 활용하여 비즈니스 요구사항을 충족할 수 있습니다.

4. 사용자 정의 필터 필요성:

  • Spring Cloud Gateway에서 제공하는 사전 정의된 필터가 비즈니스 요구사항을 충족하지 못할 경우, 사용자 정의 필터를 만들어야 합니다.
  • 사용자 정의 필터는 Java 코드를 사용하여 직접 정의할 수 있으며, Spring Cloud Gateway의 강력한 확장 기능을 활용할 수 있습니다.

구현된 코드 요약:

@Bean
public RouteLocator easybankRouteConfig(RouteLocatorBuilder builder) {
    return builder.routes()
        .route(p -> p.path("/easybank/accounts/**")
            .filters(f -> f
                .rewritePath("/easybank/accounts(?<segment>/.*)", "$\\{segment}")
                .addResponseHeader("X-Response-Time", LocalDateTime.now().toString()))
            .uri("lb://ACCOUNTS"))
        .route(p -> p.path("/easybank/loans/**")
            .filters(f -> f
                .rewritePath("/easybank/loans(?<segment>/.*)", "$\\{segment}")
                .addResponseHeader("X-Response-Time", LocalDateTime.now().toString()))
            .uri("lb://LOANS"))
        .route(p -> p.path("/easybank/cards/**")
            .filters(f -> f
                .rewritePath("/easybank/cards(?<segment>/.*)", "$\\{segment}")
                .addResponseHeader("X-Response-Time", LocalDateTime.now().toString()))
            .uri("lb://CARDS"))
        .build();
}

이 코드에서는 각 라우트에 대해 AddResponseHeader 필터를 추가하여 응답에 현재 시간(X-Response-Time)을 포함하도록 설정했습니다.

결론:

이제 Spring Cloud Gateway에서 다양한 필터를 사용하여 요청과 응답을 처리할 수 있습니다. 또한, Spring Cloud Gateway에서 제공하는 사전 정의된 필터를 활용해 대부분의 비즈니스 요구사항을 충족할 수 있습니다. 하지만 특정 요구사항이 존재할 경우, 사용자 정의 필터를 만들어 구현할 수 있습니다.

다음 챕터에서는 사용자 정의 필터를 구현하는 방법에 대해 자세히 알아보겠습니다. 감사합니다!

profile
무슨 생각하며 사니

0개의 댓글