게이트웨이 필터
ServerWebExchange / GatewayFilterChain
1. 필터 실행 흐름
스프링 클라우드 게이트웨이는 요청을 처리할 때 필터를 사용한다
필터는 요청이 들어올 때 실행되며 요청을 수정하거나 검사하고, 응답을 수정하는 등의 역할을 한다
2. 메서드의 매개변수 개념
필터의 filter() 메서드에서 두개의 매개변수(ServerWebExchange / GatewayFilterChain)가 전달된다
3. ServerWebExchange
해당 객체는 HTTP 요청과 응답을 담고 있다
요청이 들어왔을 때 해당 요청과 응답에 관련된 모든 정보를 다룰 수 있게 해주는 객체
요청 정보 : 요청 경로, 헤더, 쿼리 파라미터, HTTP 메서드 등
응답 정보 : 응답 상태 코드, 헤더, 응답 바디 등
4. GatewayFilterChain
해당 객체는 여러 개의 필터가 순차적으로 실행되도록 해준다
다음 필터로 요청을 넘기는 역할
5. 흐름
요청이 들어오면 ServerWebExchange로 요청을 다룬다
exchange.getRequest() 를 사용해 요청 데이터를 가져올 수 있다 (Request를 가져올 수 있음)
request.getURI() 로 요청의 경로를 가져올 수 있다 (Request 정보를 하나하나 가져올 수 있음)
필터 체인에 요청을 넘긴다
chain.filter(exchange) 로 다음 필터로 요청을 넘긴다 (exchange가 해당 요청의 요청과 응답의 객체)
다음 필터가 없으면 백엔드 서비스로 전달한다
후속 작업
chain.filter(exchange) 가 끝나면 응답을 수정하는 후속 작업을 한다
chain.filter(exchange)로 다음 Post 필터로 넘기고 만일 다음 필터가 없으면 클라이언트로 응답한다
.then() 을 이용해 응답이 처리된 후에 추가적인 작업을 할 수 있다
핵심 내용
ServerWebExchange : 요청과 응답을 처리하는 객체
요청 정보 : exchange.getRequest()
응답 정보 : exchange.getResponse()
GatewayFilterChain : 여러 필터가 순차적으로 실행되도록 한다
chain.filter(exchange) → 요청을 다음 필터로 전달한다