필터 사용 이유 : 메인 로직 전, 후 작업을 추가할 수 있다.
(ex : 인증 작업이라던가, 로깅, 변환등등)
filter 추가
ZuulLoggingFilter.java
package com.example.zuulservice.filter;
import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import com.netflix.zuul.exception.ZuulException;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest;
/**
* 필터 역할을 위해서 ZuulFilter를 상속받는다.
*
*/
@Slf4j // 로거 객체 정의 없이도 바로 사용할 수 있다.
@Component // 사용용도가 정확하지 않은 상태에서 일반적인 빈형태로 등록하고 싶을 때 컴포넌트를 사용.
public class ZuulLoggingFilter extends ZuulFilter {
@Override
public Object run() throws ZuulException {
log.info("****************** printing logs : ");
RequestContext ctx = RequestContext.getCurrentContext();
HttpServletRequest request = ctx.getRequest();
log.info("***********" + request.getRequestURI());
log.info("****************** printing logs : ");
return null;
}
@Override
public String filterType() { /**사전 필터인지 사후 필터인지 구분해주는 역할을 한다.*/
return "pre";// 사전 필터
}
@Override
public int filterOrder() {//여러개 필터중 순서를 의미하는데, 1개밖에 없어서 1을 사용한다.
return 1;
}
@Override
public boolean shouldFilter() { // 필터 사용여부를 뜻한다. 사용할 것이기 때문에 true로 변경해준다.
return true;
}
}
run : 동작되는 수행부를 의미한다. 해당 실습에서는 사전에 요청을 로깅하는 로직을 run 내부에 작성했다.
RequestContext : ?(추가 공부 하기)
HttpServletRequest : (추가 공부 하기)
filterType : 사전, 사후를 구분하는데 쓰인다.
filterOrder : 여러 필터간 순서를 정해줄 수 있다.
shouldFilter : 필터 사용여부 체크 가능.
'스프링 스터디 (인프런) > API GATEWAY' 카테고리의 다른 글
Spring Cloud Gateway - Filter 적용2 (0) | 2023.08.12 |
---|---|
Spring Cloud Gateway - Filter 적용 (0) | 2023.08.07 |
Spring Cloud GateWay 세팅 (0) | 2023.07.30 |
Netflix Zuul 프로젝트 생성 (0) | 2023.07.16 |
API Gateway의 역할 (0) | 2023.07.15 |