servlet的requestbody以及response的body一旦流被讀取了,就沒法再次消費了,所以這對於有要攔截請求,記錄相關信息的時候,帶來一個潛在的坑。那麼如何處理這個呢,利用filter,wrapper一層,而後proceed,最後response完以後在把cached的body設置回原始響應。spring
ContentCachingRequestWrapper wrappedRequest = new ContentCachingRequestWrapper(request); ContentCachingResponseWrapper wrappedResponse = new ContentCachingResponseWrapper(response);
spring提供了ContentCachingRequestWrapper以及ContentCachingResponseWrapper兩個類,來解決這類問題。
讀取完body以後app
wrappedResponse.copyBodyToResponse();
經過這個設置回去,就可使得終端消費者能夠正常接收響應了。code