y1551463

게이트웨이 필터

GatewayFilter
a month ago
·
3 min read

ServerWebExchange / GatewayFilterChain

1. 필터 실행 흐름

  • 스프링 클라우드 게이트웨이는 요청을 처리할 때 필터를 사용한다

    • 필터는 요청이 들어올 때 실행되며 요청을 수정하거나 검사하고, 응답을 수정하는 등의 역할을 한다

2. 메서드의 매개변수 개념

  • 필터의 filter() 메서드에서 두개의 매개변수(ServerWebExchange / GatewayFilterChain)가 전달된다

3. ServerWebExchange

  • 해당 객체는 HTTP 요청과 응답을 담고 있다

    • 요청이 들어왔을 때 해당 요청과 응답에 관련된 모든 정보를 다룰 수 있게 해주는 객체

  • 요청 정보 : 요청 경로, 헤더, 쿼리 파라미터, HTTP 메서드 등

  • 응답 정보 : 응답 상태 코드, 헤더, 응답 바디 등

4. GatewayFilterChain

  • 해당 객체는 여러 개의 필터가 순차적으로 실행되도록 해준다

    • 다음 필터로 요청을 넘기는 역할

5. 흐름

  1. 요청이 들어오면 ServerWebExchange로 요청을 다룬다

    • exchange.getRequest() 를 사용해 요청 데이터를 가져올 수 있다 (Request를 가져올 수 있음)

      • request.getURI() 로 요청의 경로를 가져올 수 있다 (Request 정보를 하나하나 가져올 수 있음)

  2. 필터 체인에 요청을 넘긴다

    • chain.filter(exchange) 로 다음 필터로 요청을 넘긴다 (exchange가 해당 요청의 요청과 응답의 객체)

      • 다음 필터가 없으면 백엔드 서비스로 전달한다

  3. 후속 작업

    • chain.filter(exchange) 가 끝나면 응답을 수정하는 후속 작업을 한다

      • chain.filter(exchange)로 다음 Post 필터로 넘기고 만일 다음 필터가 없으면 클라이언트로 응답한다

      • .then() 을 이용해 응답이 처리된 후에 추가적인 작업을 할 수 있다

핵심 내용

  • ServerWebExchange : 요청과 응답을 처리하는 객체

    • 요청 정보 : exchange.getRequest()

    • 응답 정보 : exchange.getResponse()

  • GatewayFilterChain : 여러 필터가 순차적으로 실행되도록 한다

    • chain.filter(exchange) → 요청을 다음 필터로 전달한다


- 컬렉션 아티클