작성
·
309
1
안녕하세요 선생님!
강의를 잘 듣던 와중에 궁금증이 생겨 질문 드립니다.
게이트 웨이에 설정한 필터 중,
요청 uri를 재정의 하기 위해서 RewritePath 라는 필터를 사용하잖아요.
이때 /user-service/(?<segment>.*), /$\{segment}
는 정규식인가요??... 정규식표현에 segment라는 것이 찾아봐도 나오지 않아서요!!
답변 3
1
안녕하세요, 이도원입니다.
Spring Gateway에서 사용하는 RewritePath는 자바 정규 표현식이 아닌 것으로 알고 있습니다.
URL의 일부를 다른 형식으로 변경하거나 다른 엔드포인트로 리디렉션할 때 사용되는데, 여기서 사용되는 패턴은 Java의 정규 표현식 기능이라기 보다는 URL 단위로 패턴 매칭하는 것이라고 보는게 좋을 것 같습니다. Spring 프레임워크의 rewritePath 에서의 segment는 일반적으로 URL 경로를 표현하고 있습니다. 예를 들어 http://example.com/api/products/123과 같은 UR도메인 부분을 제외한 /api, /products 및 /123 부분이 개별적인 segment가 되며, rewritePath에서는 이러한 segment를 다시 작성하거나 변환할 수 있습니다.
감사합니다.
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
친절한 답변 감사드립니다!