refactor(log/httptrace-pro): 重构请求头及响应头信息获取

This commit is contained in:
2023-12-25 20:11:33 +08:00
parent e9f01d05c9
commit 5500e5d840
7 changed files with 32 additions and 19 deletions

View File

@@ -16,6 +16,7 @@
package top.charles7c.continew.starter.core.util; package top.charles7c.continew.starter.core.util;
import cn.hutool.core.map.MapUtil;
import cn.hutool.http.useragent.UserAgent; import cn.hutool.http.useragent.UserAgent;
import cn.hutool.http.useragent.UserAgentUtil; import cn.hutool.http.useragent.UserAgentUtil;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
@@ -26,7 +27,7 @@ import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes; import org.springframework.web.context.request.ServletRequestAttributes;
import top.charles7c.continew.starter.core.constant.StringConstants; import top.charles7c.continew.starter.core.constant.StringConstants;
import java.util.Objects; import java.util.*;
/** /**
* Servlet 工具类 * Servlet 工具类
@@ -103,6 +104,21 @@ public class ServletUtils {
return userAgent.getOs().getName(); return userAgent.getOs().getName();
} }
/**
* 获取响应所有的头header信息
*
* @param response 响应对象{@link HttpServletResponse}
* @return header值
*/
public static Map<String, String> getHeaderMap(HttpServletResponse response) {
final Collection<String> headerNames = response.getHeaderNames();
final Map<String, String> headerMap = MapUtil.newHashMap(headerNames.size(), true);
for (String name : headerNames) {
headerMap.put(name, response.getHeader(name));
}
return headerMap;
}
private static ServletRequestAttributes getServletRequestAttributes() { private static ServletRequestAttributes getServletRequestAttributes() {
return (ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes()); return (ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes());
} }

View File

@@ -16,6 +16,7 @@
package top.charles7c.continew.starter.log.common.model; package top.charles7c.continew.starter.log.common.model;
import cn.hutool.core.util.StrUtil;
import lombok.Data; import lombok.Data;
import org.springframework.http.HttpHeaders; import org.springframework.http.HttpHeaders;
import top.charles7c.continew.starter.core.util.ExceptionUtils; import top.charles7c.continew.starter.core.util.ExceptionUtils;
@@ -24,7 +25,6 @@ import top.charles7c.continew.starter.core.util.ServletUtils;
import top.charles7c.continew.starter.log.common.enums.Include; import top.charles7c.continew.starter.log.common.enums.Include;
import java.net.URI; import java.net.URI;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
@@ -55,7 +55,7 @@ public class LogRequest {
/** /**
* 请求头 * 请求头
*/ */
private Map<String, List<String>> headers; private Map<String, String> headers;
/** /**
* 请求体JSON 字符串) * 请求体JSON 字符串)
@@ -93,8 +93,10 @@ public class LogRequest {
this.param = request.getParam(); this.param = request.getParam();
} }
this.address = (includes.contains(Include.IP_ADDRESS)) ? IpUtils.getAddress(this.ip) : null; this.address = (includes.contains(Include.IP_ADDRESS)) ? IpUtils.getAddress(this.ip) : null;
String userAgentString = ExceptionUtils.exToNull(() -> this.headers.get(HttpHeaders.USER_AGENT).get(0)); String userAgentString = ExceptionUtils.exToNull(() -> this.headers.get(HttpHeaders.USER_AGENT));
this.browser = (includes.contains(Include.BROWSER)) ? ServletUtils.getBrowser(userAgentString) : null; if (StrUtil.isNotBlank(userAgentString)) {
this.os = (includes.contains(Include.OS)) ? ServletUtils.getOs(userAgentString) : null; this.browser = (includes.contains(Include.BROWSER)) ? ServletUtils.getBrowser(userAgentString) : null;
this.os = (includes.contains(Include.OS)) ? ServletUtils.getOs(userAgentString) : null;
}
} }
} }

View File

@@ -38,7 +38,7 @@ public class LogResponse {
/** /**
* 响应头 * 响应头
*/ */
private Map<String, List<String>> headers; private Map<String, String> headers;
/** /**
* 响应体JSON 字符串) * 响应体JSON 字符串)

View File

@@ -17,7 +17,6 @@
package top.charles7c.continew.starter.log.common.model; package top.charles7c.continew.starter.log.common.model;
import java.net.URI; import java.net.URI;
import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
@@ -57,7 +56,7 @@ public interface RecordableHttpRequest {
* *
* @return 请求头 * @return 请求头
*/ */
Map<String, List<String>> getHeaders(); Map<String, String> getHeaders();
/** /**
* 获取请求体 * 获取请求体

View File

@@ -16,7 +16,6 @@
package top.charles7c.continew.starter.log.common.model; package top.charles7c.continew.starter.log.common.model;
import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
@@ -41,7 +40,7 @@ public interface RecordableHttpResponse {
* *
* @return 响应头 * @return 响应头
*/ */
Map<String, List<String>> getHeaders(); Map<String, String> getHeaders();
/** /**
* 获取响应体 * 获取响应体

View File

@@ -72,8 +72,8 @@ public final class RecordableServletHttpRequest implements RecordableHttpRequest
} }
@Override @Override
public Map<String, List<String>> getHeaders() { public Map<String, String> getHeaders() {
return JakartaServletUtil.getHeadersMap(request); return JakartaServletUtil.getHeaderMap(request);
} }
@Override @Override

View File

@@ -22,6 +22,7 @@ import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.util.ContentCachingResponseWrapper; import org.springframework.web.util.ContentCachingResponseWrapper;
import org.springframework.web.util.WebUtils; import org.springframework.web.util.WebUtils;
import top.charles7c.continew.starter.core.constant.StringConstants; import top.charles7c.continew.starter.core.constant.StringConstants;
import top.charles7c.continew.starter.core.util.ServletUtils;
import top.charles7c.continew.starter.log.common.model.RecordableHttpResponse; import top.charles7c.continew.starter.log.common.model.RecordableHttpResponse;
import java.util.*; import java.util.*;
@@ -49,12 +50,8 @@ public final class RecordableServletHttpResponse implements RecordableHttpRespon
} }
@Override @Override
public Map<String, List<String>> getHeaders() { public Map<String, String> getHeaders() {
Map<String, List<String>> headers = new LinkedHashMap<>(); return ServletUtils.getHeaderMap(response);
for (String name : response.getHeaderNames()) {
headers.put(name, new ArrayList<>(response.getHeaders(name)));
}
return headers;
} }
@Override @Override