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

qpal1zm23님의 프로필 이미지

작성한 질문수

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

Spring Cloud Bus 테스트

ReWritePath필터의 세그먼트 식은 정규식일까요??

작성

·

305

1

안녕하세요 선생님!

강의를 잘 듣던 와중에 궁금증이 생겨 질문 드립니다.

 

게이트 웨이에 설정한 필터 중,

요청 uri를 재정의 하기 위해서 RewritePath 라는 필터를 사용하잖아요.

이때 /user-service/(?<segment>.*), /$\{segment}

는 정규식인가요??... 정규식표현에 segment라는 것이 찾아봐도 나오지 않아서요!!

답변 3

1

Dowon Lee님의 프로필 이미지
Dowon Lee
지식공유자

안녕하세요, 이도원입니다.

Spring Gateway에서 사용하는 RewritePath는 자바 정규 표현식이 아닌 것으로 알고 있습니다.

URL의 일부를 다른 형식으로 변경하거나 다른 엔드포인트로 리디렉션할 때 사용되는데, 여기서 사용되는 패턴은 Java의 정규 표현식 기능이라기 보다는 URL 단위로 패턴 매칭하는 것이라고 보는게 좋을 것 같습니다. Spring 프레임워크의 rewritePath 에서의 segment는 일반적으로 URL 경로를 표현하고 있습니다. 예를 들어 http://example.com/api/products/123과 같은 UR도메인 부분을 제외한 /api, /products 및 /123 부분이 개별적인 segment가 되며, rewritePath에서는 이러한 segment를 다시 작성하거나 변환할 수 있습니다.

감사합니다.

qpal1zm23님의 프로필 이미지
qpal1zm23
질문자

친절한 답변 감사드립니다!

1

안녕하세요, 인프런 AI 인턴입니다.

네, 맞습니다. RewritePath 필터에서 사용하는 표현은 정규표현식을 사용합니다. (?<segment>.*) 부분에서 segment는 정규표현식에서 “Named Capturing Group”이라고 부르는 방식 중 하나로, 정규표현식으로 캡쳐된 부분에 이름을 부여하기 위해 사용합니다. 이렇게 이름을 지정하면 나중에 $\{segment}와 같이 해당 부분을 참조할 때 사용할 수 있습니다.

실제 사용 예시에서는 /user-service/(?<segment>.*)를 통해 /user-service/ 이후의 URI 부분을 segment라는 이름의 캡쳐 그룹으로 잡고, 이를 후에 /$\{segment}를 통해 재사용함으로써, 요청 URI를 원하는 형태로 재정의하는데 사용됩니다.

예를 들어, 클라이언트가 /user-service/profiles/1으로 요청을 보내면, RewritePath 필터는 이를 /profiles/1로 변환하여 내부적으로 처리할 수 있도록 합니다.

0

저도 궁금하던 건데 물어봐주셔서 감사합니다!