Spring Cloud Gateway - Custom Filter
- 📚 Spring/Spring Cloud
- 2021. 9. 27. 00:06
| Custom Filter
Custom Filter를 적용하기 위해서는 AbstractGatewayFilterFactory를 상속받아 사용해야한다.
JWT - json web token
CustomFilter.java
package com.kyhslam.apigatewayservice.filter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.gateway.filter.GatewayFilter;
import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.http.server.reactive.ServerHttpResponse;
import org.springframework.stereotype.Component;
import reactor.core.publisher.Mono;
@Component
@Slf4j
public class CustomFilter extends AbstractGatewayFilterFactory<CustomFilter.Config> {
public CustomFilter() {
super(Config.class);
}
@Override
public GatewayFilter apply(Config config) {
// Custom Pre Filter
return (exchange, chain) -> {
ServerHttpRequest request = exchange.getRequest();
ServerHttpResponse response = exchange.getResponse();
log.info("Custom PRE filter: request id -> {} ", request.getId());
// Custom Post Filter
return chain.filter(exchange).then(Mono.fromRunnable(() -> {
log.info("Custom POST filter: response code -> {} ", response.getStatusCode());
}));
};
}
public static class Config {
}
}
Mono를 알려면 webflux를 공부해야 한다.
application.yml
server:
port: 8000
eureka:
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://localhost:8761/eureka
spring:
application:
name: apigateway-service
cloud:
gateway:
routes:
- id: first-service
uri: http://localhost:8081/
predicates:
- Path=/first-service/**
filters:
- CustomFilter
- id: second-service
uri: http://localhost:8082/
predicates:
- Path=/second-service/**
filters:
- CustomFilter
'📚 Spring > Spring Cloud' 카테고리의 다른 글
Spring Cloud Gateway - Logging Filter (0) | 2021.09.29 |
---|---|
Spring Cloud Gateway - Global Filter (0) | 2021.09.27 |
Spring Cloud Gateway - Filter (0) | 2021.09.24 |
Spring Cloud Gateway란? (0) | 2021.09.23 |
API Gateway란? (Spring Cloud Gateway) (0) | 2021.09.22 |