filter에서 response body를 수정해서 client에 리턴하고 싶은데요.
1596
작성한 질문수 2
response.getBody() 뭐 이런식의 메서드가 없어서요...
getHeader()는 있는데....
body의 특정 문자열을 바꿔서 리턴하고자 해서 문의 해봅니다.
답변 1
0
안녕하세요, 인프런 AI 인턴이에요.
filter에서 수정한 response body를 client에게 리턴하고 싶으시다면, responseBody를 직접 수정하시면 됩니다.
responseBody 문자열을 바꾸기 위해서는 response 문자열을 가져와서 수정한 후에, response 객체에 setting을 해주시면 됩니다.
아래는 예시 코드입니다.
@Component
public class MyFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
ContentCachingResponseWrapper responseWrapper =new ContentCachingResponseWrapper((HttpServletResponse) response);
// chain의 doFilter 호출을 통해 request, response 객체를 전달합니다.
chain.doFilter(req, responseWrapper)
String responseBody = new String(responseWrapper.getContentAsByteArray(), responseWrapper.getCharacterEncoding());
responseBody = responseBody.replaceAll("originalString", "changedString");
// responseWrapper 객체의 내용을 responseBody로 업데이트합니다.
responseWrapper.copyBodyToResponse();
}
}
위 예시 코드에서는 ContentCachingResponseWrapper를 이용하여 responseWrapper 객체를 초기화합니다. 그리고 chain.doFilter()를 호출하여 request와 responseWrapper 객체를 전달합니다.
그 다음, responseWrapper.getContentAsByteArray() 메소드를 호출하여 ContentCachingResponseWrapper 내용의 byte array를 가져옵니다. 그리고 이 값을 String 객체로 변환한 후에, 수정한 후 반환할 문자열을 수정하면 됩니다.
수정이 완료되면 responseWrapper.copyBodyToResponse() 메서드를 호출하여 수정된 responseBody로 response 객체를 업데이트하면 됩니다.
이렇게 하면 filter를 이용한 response body 수정이 가능합니다.
감사합니다.
kafka 업데이트 강의 듣고 시포요
0
91
2
강의 교안
0
79
2
마이크로서비스간 통신 시, 인증 처리
0
87
2
api gateway 에서 인증 처리
0
67
1
섹션 19 질문드립니다
0
60
2
강의 자료 업데이트
0
87
2
부하분산 강의 섹션
0
59
1
강의자료는 어디에서?
0
78
2
강의 자료는 어디서 다운 받을 수 있나요?
0
114
2
전체 사용자 조회시 오류
0
60
1
혹시 pk 외 별도의 id 를 부여한 이유가 있을까요 ??
0
113
2
학습 방향
0
96
2
카프카 커넥터 사용 목적 문의
0
87
2
kafka 강의
0
109
2
서비스 디스커버리 종류
0
87
2
강의 자료에 대해서 궁금해요
0
119
2
GlobalFilter, LoggingFilter가 동작하지 않습니다.
0
91
2
Kafka Source Connect 버전 에러
0
90
2
소스커넥터는 사용안한 거 맞죠?
0
82
2
강의자료 업데이트 문의
0
97
2
강의에서 BCryptPasswordEncoder 에 역할(5-2)
0
59
1
강의 업데이트 계획이 궁금합니다.
0
114
2
MSA 애플리케이션에 Spring Web과 Spring Data JPA를 사용하는 것이 바람직한지 궁금합니다. (MSA 설계와 관련된 질문입니다)
0
163
2
어떤 것이 업데이트 된 건가요?
0
167
2





