yml 파일에서 작업하지 않고 분기처리 진행 연습
Config 클래스를 통해서 분기처리 전후로 필터링을 진행한다.
@Configuration
public class FilterConfig {
@Bean
public RouteLocator gatewayRoutes(RouteLocatorBuilder builder) {
return builder.routes()
.route(r -> r.path("/first-service/**")
.filters(f -> f.addRequestHeader("first-request","first-request-header")
.addResponseHeader("first-response","first-response-header"))
.uri("http://localhost:8081"))//r(예시)이라는 값이 전달되면 path를 확인하고 filter를 동작해서 uri로 이동시키겠다는 의미
.route(r -> r.path("/second-service/**")
.filters(f -> f.addRequestHeader("second-request","second-request-header")
.addResponseHeader("second_response","second_response-header"))
.uri("http://localhost:8082"))
.build();
}
}
RouteLocator를 이용해서 라우팅을 등록가능.
위코드 의미는
path가 first-service/**로 들어오는 값들이면 uri(localhost:8081)로 이동시키는데,
이때 RequestHeader에는 first-request값을, ResponseHeader에는 first-response라는 파라미터를 추가한다.
first-service - FirstServiceController.java
@GetMapping("/message")
public String message(@RequestHeader("first-request") String header) {
log.info(header);
return "Hello World in First Service";
}
second-service - SecondServiceController.java
@GetMapping("/message")
public String message(@RequestHeader("second-request") String header) {
log.info(header);
return " Hello world in Second Service.";
}
apigateway에서 필터에 헤더값을 넣어줬으므로, 이를 확인하기 위해서 header라는 변수로 받은 후, 출력해본다.
출력 결과
로그 상에서도 헤더를 제대로 출력하는 것을 확인할 수 있다.
Response-Header 확인
도구더보기 -> 개발자도구 ->network -> 새로고침 진행시 response-Header도 확인 가능
'스프링 스터디 (인프런) > API GATEWAY' 카테고리의 다른 글
Spring Cloud Gateway - Custom Filter 적용 ➀ (0) | 2023.08.24 |
---|---|
Spring Cloud Gateway - Filter 적용 3 (0) | 2023.08.22 |
Spring Cloud Gateway - Filter 적용 (0) | 2023.08.07 |
Spring Cloud GateWay 세팅 (0) | 2023.07.30 |
Netflix Zuul Filter 적용하기 (0) | 2023.07.29 |