티스토리 뷰

API Gateway Pre & Post  Custom Filter 설정

 

Pre-filtes ( 사전 필터 )
요청이 목적지로 라우팅되기 전에 호출되는 필터이다. 

[일반적인 사용 사례]

  • 요청 메시지 검증(Validation) 처리
  • 요청 권한이 있는 계정인지 인증하는 작업 ( 게이트 키퍼 )

 

Post-filtes ( 사후 필터 )
서비스 호출후 클라이언트에게 응답이 나가기 전에 호출된다. 일반적으로 응답을 아카이빙하거나 오류 처리및 응답 검사에 사용된다.

[일반적인 사용 사례]

  • 응답 시 응답내용을 아카이빙한다.
  • 응답이 정상적인지 검사하고 오류가 발생했을 때 오류처리한다.

 

 

 

예제 코드

 

설정

전제
  • Eureka 를 사용한 서비스 디스커버리가 존재한다고 가정한다.
  • User Service와 Order Service의 상세내용은 아래 Git Repo를 참조한길 바란다.

 

build.gradle 작성

  • Eureka, Gateway 의존성 추가

 

설정파일 작성 (YAML)

 

Pre-Filter 구현

 

  • GlobalFilter 구현
  • @Component 를 통해 스프링 빈 등록
  • @Order(int order) 어노테이션으로 필터 순서 설정

 

💡 추상 클래스인 AbstractGatewayFilterFactory 를 확장한 커스텀 필터를 생성하고 설정파일(YAML)에 관련 필터설정을 추가하는 방법도 있다. (링크)

 

Post Filter 구현

  • GlobalFilter 를 팩토리 메소드를 통해 스프링 빈으로 등록하는 방식.
  • Mono.fromRunnable(... 뒷 부분의 내용이 Post Filter 영역이다.

 

💡 추상 클래스인 AbstractGatewayFilterFactory 를 확장한 커스텀 필터를 생성하고 설정파일(YAML)에 관련 필터설정을 추가하는 방법도 있다. (링크)

 

결과

GET: http://localhost:8072/order/1 호출 후 콘솔 로깅

 

Git Repo

 

참조

 

스프링 마이크로서비스 코딩 공작소 - 교보문고

스프링 부트와 스프링 클라우드를 이용한 마이크로서비스 모범 사례 | 이론은 탄탄하게,실습은 실무에 가깝게! 스프링 부트 + 스프링 클라우드로 시작하자 마이크로서비스는 서비스 개발, 그 이

www.kyobobook.co.kr

 

댓글