본문 바로가기
스프링 스터디 (인프런)/API GATEWAY

Spring Cloud Gateway - Filter 적용

by 백엔드 개발자 2023. 8. 7.

현재 진행하고 있는 프로젝트 구조

 

cloud gateway  내부 역할을 구체적으로 보여주고 있는 사진이다.

 

1. Gateway Handler Mapping : 클라이언트로부터 어떤 요청이 들어왔는지 요청 정보를 받는다.

2. Predicate : 어떠한 이름으로 요청이 들어왔는지 조건을 분기처리 해준다.

3. PreFilter :사전 처리 필터

4. Post Filter : 사후 처리 필터

 

 

Filter를 

1 : Java code를 이용해서 만드는 방법

2 : Property 파일(yml)을 이용해서 만드는 방법

2가지를 진행해본다.

 

 

추가해볼 필터

@Bean을 RouteLocator로 등록하게 되면

yml로 라우팅하는 것과 동일한 역할을 하게 된다.

 

해당코드에서는 익명클래스인 람다식으로 코드를 간결하게 진행했다.

 

path : 요청이 들어올 조건 경로 지정

addRequestHeader : 요청 헤더에 파라미터값을 추가

addResponseHeader : 응답 헤더에 파라미터값을 추가

즉, 클라이언트가 추가한 것은 아니지만, Cloudgateway 단에서 자유롭게 추가 작업을 진행하는 예제이다.

 

.uri : 앞에 작업이 다 끝나고 이제 이동할 주소를 의미한다.

 

 

요청값 및 응답값에 추가적인 필터처리가 가능한 것을 보여주는 사

 

 

 

 

Controller 수정

 

Filter에서 first-request.. 와 같은 값을 요청시 헤더에 넣어주므로,

 

@RequestHeader 어노테이션을 통해 해당 값이 실제로 헤더에 들어왔는지 확인해본다.

 

@RequestHeader : 요청헤더값을 컨트롤러 메서드 파라미터로 전달하는 어노테이션이다. 

 

 

 

 

 

Test 방법

 

first-service가 제대로 호출되어서

first-request-header값을 찍는 것 확인 해보기.

response헤더값도 어떤 값이 추가되었는지 확인 해보기.

 

 

 

 

 

 

 

 

 

Ref : https://www.inflearn.com/course/lecture?courseSlug=%EC%8A%A4%ED%94%84%EB%A7%81-%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4&unitId=68415 

 

학습 페이지

 

www.inflearn.com