반응형
목표
스프링 REST API 호출시.. 해당 api를 파라미터값만 바꿔서 내부적으로 한번 더 실행시키게 하고 싶었다.
다른 해결방식도 있겠지만.. 이렇게는 안해봐서 .. 찾아봄
목표를 인터셉터 또는 필터로 해당 api 메소드 한번 더 실행하는걸로 잡았음
결과
테스트하고 자료 많이 찾아봤는데..
개인적인 생각으로 이런 방식은 안쓰는게 좋은 것 같음 ..
일단 비슷한 방식으로 재호출은 구현 가능했음
아래와 같이 인터셉터에서 api 한번 더 실행은 일단 가능한데 .. 인터셉터 전에 응답값은 가져올수 없는것 같다
응답값도 가져왔다면 원하는대로 구현이 가능했을것임 ..
찾으면 더 나은 방법을 찾을 수 있을거같긴한데... 이렇게 쓰는게 spring 구조상 정석처럼 쓰는게 아니어서
굳이 이방법을 고수하지는 않았음..
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
Log.info("==================== afterCompletion!!" + request.getParameter("apiAccessCredential"));
Log.info("Request URI ===> " + request.getRequestURI());
Log.info("Request URI ===> " + handler);
if (handler instanceof HandlerMethod)
{ // HandlerMethod 는 후에 실행할 컨트롤러의 메소드 입니다. // 메소드명, 인스턴스, 타입, 사용된 Annotation 들을 확인할 수 있습니다.
HandlerMethod method = (HandlerMethod) handler;
AutoController a = (AutoController) method.getBean();
Log.info("Request URI ===> " + a.toString());
try {
Log.info("handler method name : " + a.autoPost(request.getParameter("apiAccessCredential"), request.getParameter("date"), request.getParameter("forceyn")));
} catch (Throwable e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
아래 주소에는 다른 방법이 있긴있음.. 구현해보진 않아서 가능한지는 모름
https://stackoverflow.com/questions/21193380/get-requestbody-and-responsebody-at-handlerinterceptor
반응형
'Web > 스프링' 카테고리의 다른 글
[java-mongo] FindIterable 조회 방법 example 예제 (0) | 2022.07.06 |
---|---|
kafka 컨슈머 실패시 Exception 으로 조건 구분하기 Exception체크 (0) | 2020.08.26 |
[mybatis] ibatis -> mybatis 트랜잭션 관리 (0) | 2019.11.20 |
스프링 <context:component-scan> 분석 (0) | 2019.05.07 |
[ORM] ORM이란? JPA 설명 (0) | 2019.03.26 |
댓글