From 2b5a06546625636241c1967ed2c9ee7118dd8ddb Mon Sep 17 00:00:00 2001 From: ialbert Date: Thu, 28 May 2026 17:35:54 +0300 Subject: [PATCH] backend-api HTTP interceptor logs [2] --- .../filter/CachedHttpServletRequest.java | 6 +++- .../filter/RequestCachingFilter.java | 28 +++++++++++++++++-- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/filter/CachedHttpServletRequest.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/filter/CachedHttpServletRequest.java index 6befa668c..dd358fe0d 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/filter/CachedHttpServletRequest.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/filter/CachedHttpServletRequest.java @@ -12,7 +12,7 @@ import org.springframework.util.StreamUtils; public class CachedHttpServletRequest extends HttpServletRequestWrapper { - private byte[] cachedPayload; + private final byte[] cachedPayload; public CachedHttpServletRequest(HttpServletRequest request) throws IOException { super(request); @@ -25,6 +25,10 @@ public class CachedHttpServletRequest extends HttpServletRequestWrapper { return new CachedServletInputStream(this.cachedPayload); } + public byte[] getCachedPayload() { + return cachedPayload; + } + @Override public BufferedReader getReader() { ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(this.cachedPayload); diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/filter/RequestCachingFilter.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/filter/RequestCachingFilter.java index 793b12241..4128b880d 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/filter/RequestCachingFilter.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/filter/RequestCachingFilter.java @@ -12,7 +12,6 @@ import org.slf4j.LoggerFactory; import org.springframework.core.Ordered; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; -import org.springframework.util.StreamUtils; import org.springframework.web.filter.OncePerRequestFilter; @@ -32,9 +31,34 @@ public class RequestCachingFilter extends OncePerRequestFilter { log.debug("received {} request, destination '{}', body: {}", request.getMethod(), request.getContextPath() + request.getServletPath(), - StreamUtils.copyToString(cachedHttpServletRequest.getInputStream(), StandardCharsets.UTF_8) + removeWhiteSpaces(cachedHttpServletRequest.getCachedPayload()) ); } filterChain.doFilter(cachedHttpServletRequest, response); } + + private static String removeWhiteSpaces(byte[] cachedPayload) { + if (cachedPayload == null || cachedPayload.length == 0) { + return "[empty]"; + } + String body = new String(cachedPayload, StandardCharsets.UTF_8); + + StringBuilder result = new StringBuilder(body.length()); + boolean previousWasWhitespace = false; + for (int i = 0; i < body.length(); i++) { + char ch = body.charAt(i); + + if (Character.isWhitespace(ch)) { + if (!previousWasWhitespace) { + result.append(' '); + previousWasWhitespace = true; + } + } else { + result.append(ch); + previousWasWhitespace = false; + } + } + + return result.toString().trim(); + } }