使用cached的wrapper類讀取請求響應內容

問題

servlet的requestbody以及response的body一旦流被讀取了,就沒法再次消費了,所以這對於有要攔截請求,記錄相關信息的時候,帶來一個潛在的坑。那麼如何處理這個呢,利用filter,wrapper一層,而後proceed,最後response完以後在把cached的body設置回原始響應。spring

caching wrapper

ContentCachingRequestWrapper wrappedRequest = new ContentCachingRequestWrapper(request);
ContentCachingResponseWrapper wrappedResponse = new ContentCachingResponseWrapper(response);

spring提供了ContentCachingRequestWrapper以及ContentCachingResponseWrapper兩個類,來解決這類問題。
讀取完body以後app

wrappedResponse.copyBodyToResponse();

經過這個設置回去,就可使得終端消費者能夠正常接收響應了。code

相關文章
相關標籤/搜索