Spring Cloud Gateway Filter(java,yml)の設定

12401 ワード

🔨ymlではなくJavaコードに設定

既存のyml設定にコメント処理を行います.

次にconfigパッケージを作成し、FilterConfig javaファイルを作成します.
@Configuration  //해당 어노테이션을 통해 spring이 시작될때 context에 자동으로 등록되도록 한다.
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://127.0.0.1:8001"))  //기존 yml에서 1번 서비스 설정과 동일
                .route(r-> r.path("/second-service/**")
                        .filters(f-> f.addRequestHeader("second-request","second-request-header")
                                    .addResponseHeader("second-response","second-response-header"))
                        .uri("http://127.0.0.1:8002"))  //기존 yml에서 2번 서비스 설정과 동일
                .build();
    }
}
次の設定では、既存のyml設定と同じ設定をフィルタし、headerに値を挿入できます.
サービス1,2の変更
@GetMapping("/message")
public String message(@RequestHeader("first-request") String header){
    log.info("header = {}",header);
    return "header = "+header;
}
@GetMapping("/message")
public String message(@RequestHeader("second-request") String header){
    log.info("header = {}",header);
    return "header = "+header;
}
ヘッダー値をlogと返される文字列に追加し、既存のコードに次の値を出力しようとします.

2つのサービスが要求されると、各ヘッダの情報がログに伝達されていることを確認できます.


また、各クライアント応答のヘッダに作成したヘッダ値が含まれているかどうかを確認することもできます.
🔨ymlに設定
既存のFilterConfigファイルを削除するか、これらのファイルのみにコメントしてymlを使用して同じ操作を行います.
server:
  port: 8000

eureka: #eureka 세팅은 현재 사용 안함
  client:
    fetch-registry: false
    register-with-eureka: false
    service-url:
      defaultZone: http://127.0.0.1:8761/eureka

spring:
  application:  #gateway service 이름름    name: apigateway-service
  cloud:
    gateway:  #gateway 설정
      routes:
        - id: first-service #gateway로 연결될 서비스 이름
          uri: http://127.0.0.1:8001/ #gateway로 연결될 서비스 uri
          predicates: #gateway로 연결될 서비스의 url 매핑
            - Path=/first-service/**
          filters:
            - AddRequestHeader=first-request, first-request-header2
            - AddResponseHeader=first-response, first-response-header2
        - id: second-service
          uri: http://127.0.0.1:8002/
          predicates:
            - Path=/second-service/**
          filters:
            - AddRequestHeader=second-request, second-request-header2
            - AddResponseHeader=second-response, second-response-header2
サーバーの実行

postmanリクエストにより、出力結果がフィルタで設定した内容と同じであることが確認できます.