작성
·
859
·
수정됨
0
안녕하세요 선생님 강의 정말 잘 듣고 있습니다..!
혹시 더 좋은 방법이 있을까 싶어 질문 드립니다.
spring:
application:
name: api-gateway
cloud:
gateway:
routes:
- id: A
uri: lb://USER-SERVICE
predicates:
-Path=/user-service/**
위와 같이 gateway 설정을 하게 되면,
user service에도 /user-service/ 라는 path가 같이 합해져 요청 url로 전달되어,
Controller의 /user, /health-check, /welcome 같은 매핑을 모두 /user-service/user, /user-service/health-check, /user-service/welcome 으로 변경하라고 말씀 주셨습니다
혹시 이렇게 컨트롤러의 매핑 정보를 변경하지 않고,
api gateway 단에서 필터를 이용해 사용자 요청 url을 조작해서 라우팅 할 수 있는 방법이 있을까요..??
답변 1
0
cloud:
gateway:
routes:
- id: user-service
uri: lb://USER-SERVICE
predicates:
- Path=/user-service/**
filters:
- RewritePath=/user-service/(?<segment>.*), /${segment}
요렇게 하시면 됩니다! (RewritePath 방식)
spring:
application:
name: api-gateway
cloud:
gateway:
routes:
- id: A
uri: lb://USER-SERVICE
predicates:
- Path=/user-service/**
filters:
- StripPrefix=1
혹은 이렇게 하셔도 되는데,
차이점은 아래와 같다고 합니다.
StripPrefix=1
: 단순히 지정된 수만큼 경로의 프리픽스를 제거합니다.
RewritePath
: 경로를 정규 표현식으로 맞춰서 더 복잡한 수정이 가능하며, 경로의 특정 부분을 대체하는 등의 세밀한 제어가 가능합니다.