기존
변경
filters의 RewritePath를 통해서 "/user-service/"를 생략하도록 변경한다.
기존의 방식으로는 컨트롤러에서 prefix를 다음과 같이 지정해주어야 했다.
예를 들어 포트 번호가 60000이라 한다면
http://127.0.0.1:6000/user-service/health_check
처럼 마이크로 서비스를 인식해주는 식별자로서 "user-service"라는 prefix가 필요했다.
그런데 마이크로서비스 입장에서는 "user-service"라는 prefix는 redundant하다.
서두의 주소를 나타내는 uri에서 이미 해당하는 마이크로서비스의 주소를 나타내고 있기 때문에
http://127.0.0.1/60000/login 만으로도 충분한 의미전달이 되기 때문이다.
그런데 기존의 방식으로 gateway에서 호출시엔
http://127.0.0.1/60000/user-service/ -> 이후 추가 uri 탐색
으로 진행이 되기 때문에
user-service가 필요했었는데
filter의 rewrite 문법을 통해 이를 지워주었고, 결과적으로 uri의 불필요한 중복을 제거할 수 있다.
spring:
application:
name: apigateway-service
cloud:
gateway:
default-filters:
- name: GlobalFilter
args:
baseMessage: Spring Cloud Gateway Global Filter
preLogger: true
postLogger: true
routes:
- id: order-service
uri: lb://ORDER-SERVICE
predicates:
- Path=/order-service/**
- id: catalog-service
uri: lb://CATALOG-SERVICE
predicates:
- Path=/catalog-service/**
# - id: user-service
# uri: lb://USER-SERVICE
# predicates:
# - Path=/user-service/**
- id: user-service
uri: lb://USER-SERVICE
predicates:
- Path=/user-service/login
- Method=POST
filters:
- RemoveRequestHeader=Cookie
- RewritePath=/user-service/(?<segment>.*), /$\{segment}
- id: user-service
uri: lb://USER-SERVICE
predicates:
- Path=/user-service/users
- Method=POST
filters:
- RemoveRequestHeader=Cookie
- RewritePath=/user-service/(?<segment>.*), /$\{segment}
- id: user-service
uri: lb://USER-SERVICE
predicates:
- Path=/user-service/actuator/**
- Method=GET,POST
filters:
- RemoveRequestHeader=Cookie
- RewritePath=/user-service/(?<segment>.*), /$\{segment}
- id: user-service
uri: lb://USER-SERVICE
predicates:
- Path=/user-service/**
- Method=GET
filters:
- RemoveRequestHeader=Cookie
- RewritePath=/user-service/(?<segment>.*), /$\{segment}
user-service를 제외하고 uri입력시 정상적으로 호출되는 것을 확인할 수 있다.
반응형
'Programming > Java, Spring' 카테고리의 다른 글
[Spring Cloud] Config yml 설정, actuator를 이용한 자동 반영 (0) | 2023.06.01 |
---|---|
[Spring Cloud] JWT 토큰 생성과 API Gateway에서 검증 필터 구현 (0) | 2023.06.01 |
[Spring Cloud] Users MicroService를 Api Gateway에 등록하기 (0) | 2023.05.31 |
[Spring Cloud] API Gateway Service / routing, filter (0) | 2023.05.31 |
[Spring Cloud] Discovery Server 만들고 User service 등록하기 (0) | 2023.05.31 |