인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

qpal1zm23님의 프로필 이미지

작성한 질문수

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

Users Microservice와 Spring Cloud Gateway 연동

API Gateway를 통해 라우팅 시 user service로 전달되는 요청 url에 대해 질문 드립니다..!

작성

·

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

Management Uiti님의 프로필 이미지

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: 경로를 정규 표현식으로 맞춰서 더 복잡한 수정이 가능하며, 경로의 특정 부분을 대체하는 등의 세밀한 제어가 가능합니다.