본문 바로가기

인터셉터2

Spring Boot에서 Request 이력 저장하기 클라이언트에서 호출한 Api 이력을 저장해야 하는 요구사항이 있었다. 시스템 관리 화면에서 호출하는 API의 호출 Url, 요청 파라미터, 요청 body를 저장해서 누가 어떤 이벤트를 발생시켰는지 이력을 확인할 수 있어야 했다. 시스템 관리 api 모든 요청에 대해서 저장해야했기 때문에 각 컨트롤러 내부가 아닌 공통 처리가 필요했다. Interceptor가 적용되어 있었기 때문에 Interceptor에서 호출 정보를 저장하면 되겠지 했는데 문제가 있었으니,, 인터셉터에서 바디를 꺼내서 저장 후 내부에서 다시 읽으려고 하면 에러가 팡팡 터졌다는 것 찾아보니 HttpServletRequest의 InputStream 은 한번 읽으면 다시 못 읽기 때문에 다시 읽으려고 하면 에러가 난다고 한다.. 구글링의 결과.. 2023. 1. 9.
[SpringBoot]SpringBoot에서 Filter와 Interceptor 사용하기 Filter 스프링에서 지원하는 기능은 아니고 javaee에서 지원하는 것으로 Dispatcher Servlet 이전에 실행되어 리소스에 대한 요청과 응답에 대해 필터링 작업을 하는 object이다. 인증, 로깅, 암호화 등에 사용할 수 있다. 더보기 Dispatcher Servlet은 HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해주는 프론트 컨트롤러(Front Controller)이다. 필터의 실행 메소드 종류 void init(FilterConfig filterConfig) 필터 인스턴스 초기화 시 실행되는 메서드 void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) 필터.. 2023. 1. 2.