[스프링] 스프링 클라우드 게이트웨이 필터링과 전처리
이번 글에서는 스프링 클라우드 게이트웨이 필터링과 전처리에 대해 알아보겠습니다.
1. 스프링 클라우드 게이트웨이 필터
게이트웨이 필터는 GatewayFilter
및 GlobalFilter
두 가지 타입이 있습니다. GatewayFilter
는 특정 라우트에만 적용되는 필터이며 GlobalFilter
는 모든 라우트에 적용되는 필터입니다.
@Component
public class CustomFilter implements GlobalFilter {
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
// 필터링 로직 구현
return chain.filter(exchange);
}
}
위 예제에서 CustomFilter
는 GlobalFilter
를 구현한 클래스로, 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 설정에서 CustomFilter
와 AuthFilter
가 example-route
에 적용되도록 설정되어 있습니다.
이렇게하여, 스프링 클라우드 게이트웨이를 사용하면 게이트웨이 필터를 통해 클라이언트 요청에 대한 전처리 작업을 유연하게 처리할 수 있습니다.
더 많은 정보를 원하시면 공식 문서를 참고하시기 바랍니다.