강의

멘토링

커뮤니티

Inflearn Community Q&A

qpal1zm23's profile image
qpal1zm23

asked

Microservice Application (MSA) Development with Spring Cloud

Integration between Users Microservice and Spring Cloud Gateway

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

Written on

·

909

·

Edited

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을 조작해서 라우팅 할 수 있는 방법이 있을까요..??

 

architecturespring-bootJPAspring-cloudKafkamsa

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

qpal1zm23's profile image
qpal1zm23

asked

Ask a question