Spring Cloud로 개발하는 마이크로서비스 애플리케이션_API Gateway Service_4

2023. 2. 16. 23:26·공부/Spring
반응형

 

 

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

Spring Cloud Gateway - Filter 적용(Java 소스)

자바 코드로 필터 설정을 하기 위해 application.yml에 설정했던 route 관련 설정을 주석처리한다.

spring:
  application:
    name: apigateway-service
#  cloud:
#    gateway:
#      routes:
#        - id: first-service
#          uri: http://localhost:8081/
#          predicates:
#            - Path=/first-service/**
#        - id: second-service
#          uri: http://localhost:8082/
#          predicates:
#            - Path=/second-service/**

 

FilterConfig.java 생성

 

람다식과 코드 체이닝 방식을 통해 코드를 작성한다.

@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"))
                .build();
    }
}

path로 들어온 주소를 uri의 값 주소로 보내준다. 

filters의 addRequestHeader는 Request(요청) 헤더에 추가 할 데이터를 키와 값 쌍으로 넣어주고, addResponseHeader는 Response(응답) 헤더에 추가할 데이터를 키와 값 쌍으로 넣어준다.

second-service도 작성해주자.

.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"))

 

 

first-service Controller 메서드 추가

@GetMapping("/message")
public String message(@RequestHeader("first-request") String header) {
    log.info(header);
    return "Hello World in First Service";
}

log는 Lombok을 사용하여 클래스 블록에 @Slf4j를 선언했다.

 

 

second-service Controller 메서드 추가

@GetMapping("/message")
public String message(@RequestHeader("second-request") String header) {
    log.info(header);
    return "Hello World in Second Service";
}

 

세 개의 프로젝트 모두 서버를 재실행하고 크롬에서 확인한다.

또, 콘솔을 확인하면 로그로 찍은 값이 보이는 것도 확인한다.

개발자 도구 network 탭에서 response 메세지도 확인한다.

 

 

 

Spring Cloud Gateway - Filter 적용(property)

FilterConfig.java 주석 처리

Configuration, Bean 어노테이션만 주석처리 하면 자바로 설정했던 내용이 적용되지 않는다.

//@Configuration
public class FilterConfig {
    //@Bean
    public RouteLocator gatewayRoutes(RouteLocatorBuilder builder) {

 

 

application.yml

cloud:
  gateway:
    routes:
      - id: first-service
        uri: http://localhost:8081/
        predicates:
          - Path=/first-service/**
      - id: second-service
        uri: http://localhost:8082/
        predicates:
          - Path=/second-service/**

 

위 파일에 predicates와 같은 레벨로 filter 정보를 추가한다.

//... 생략

filters:
  - AddRequestHeader=first-request, first-request-header2
  - AddResponseHeader=first-response, first-response-header2
  
//...생략
filters:
    - AddRequestHeader=second-request, second-request-header2
    - AddResponseHeader=second-response, second-response-header2

 

서버를 재실행한다.

이번에는 포스트맨에서 확인하자.

 

Header 탭을 클릭해 추가한 filter가 적용되었는지 확인하자.

 


- 출처 : 인프런 Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) 강의

 

반응형
저작자표시 비영리 변경금지 (새창열림)
'공부/Spring' 카테고리의 다른 글
  • Spring Cloud로 개발하는 마이크로서비스 애플리케이션_API Gateway Service_6
  • Spring Cloud로 개발하는 마이크로서비스 애플리케이션_API Gateway Service_5
  • Spring Cloud로 개발하는 마이크로서비스 애플리케이션_API Gateway Service_3
  • Spring Cloud로 개발하는 마이크로서비스 애플리케이션_API Gateway Service_2 (gateway 사용)
데부한
데부한
어차피 할 거면 긍정적으로 하고 싶은 개발자
    반응형
  • 데부한
    동동이개발바닥
    데부한
  • 전체
    오늘
    어제
    • 분류 전체보기 (307)
      • 방통대 컴퓨터과학과 (27)
        • 잡담 (9)
        • 3학년1학기 (17)
      • 프로젝트 및 컨퍼런스 회고 (1)
        • 프로젝트 (4)
        • 한이음 프로젝트 (0)
        • 회고 (3)
      • 공부 (165)
        • Spring (37)
        • JPA (71)
        • 인프런 워밍업 클럽_BE (10)
        • Java (6)
        • React.js (27)
        • 넥사크로 (11)
        • 기타 (3)
      • 알고리즘 (85)
        • 알고리즘 유형 (10)
        • 알고리즘 풀이 (57)
        • SQL 풀이 (18)
      • 에러 해결 (13)
      • 잡담 (7)
        • 국비교육 (2)
        • 구매후기 (5)
        • 진짜 잡담 (0)
  • 블로그 메뉴

    • Github
    • Linkedin
    • 홈
    • 방명록
    • 글쓰기
    • 관리
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    egov
    JPA
    백준
    react
    프로그래머스
    MSA
    프론트엔드
    알고리즘
    방통대
    Spring
    개발자
    IT
    Java
    넥사크로
    oracle
    코딩테스트
    에러해결
    토비의스프링부트
    SQL
    RESTful
    SpringBoot를 이용한 RESTful Web Service 개발
    인프런
    전자정부프레임워크
    기출문제
    토이프로젝트
    운영체제
    자바스크립트
    QueryDSL
    스프링부트
    springboot
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
데부한
Spring Cloud로 개발하는 마이크로서비스 애플리케이션_API Gateway Service_4
상단으로

티스토리툴바