diff --git a/.idea/misc.xml b/.idea/misc.xml
index d61b968..87afe53 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -8,6 +8,50 @@
+
+
+
+
+
+
diff --git a/src/main/java/cn/zhangdeman/Main.java b/src/main/java/cn/zhangdeman/Main.java
index dd5663d..2b54e55 100644
--- a/src/main/java/cn/zhangdeman/Main.java
+++ b/src/main/java/cn/zhangdeman/Main.java
@@ -1,7 +1,6 @@
package cn.zhangdeman;
-//TIP To Run code, press or
-// click the icon in the gutter.
+
public class Main {
public static void main(String[] args) {
diff --git a/src/main/java/cn/zhangdeman/RecordField.java b/src/main/java/cn/zhangdeman/RecordField.java
index 3ddf677..f2d653d 100644
--- a/src/main/java/cn/zhangdeman/RecordField.java
+++ b/src/main/java/cn/zhangdeman/RecordField.java
@@ -10,7 +10,6 @@ public class RecordField {
public static final String SERVER_HOSTNAME = "server_hostname"; // 服务器名称
public static final String COST = "cost"; // 请求耗时
public static final String CONTEXT_DATA = "context_data"; // 本条日志的上下文信息
- public static final String RESPONSE_DATA = "response_data"; // 接口响应数据
// 请求信息
public static final String REQUEST_INFO = "request_info"; // 请求信息
public static final String REQUEST_UA = "user_agent"; // 请求ua
@@ -26,4 +25,13 @@ public class RecordField {
public static final String REQUEST_URI = "uri"; // 请求接口
public static final String RUNTIME_THREAD_CONTEXT = "runtime_thread_context"; // 运行时线程上下文
+
+ public static final String RESPONSE_INFO = "response_data"; // 接口响应数据
+ public static final String RESPONSE_CODE = "code"; // 接口响应数据状态码
+ public static final String RESPONSE_MESSAGE = "message"; // 接口响应数据状态码描述
+ public static final String RESPONSE_DATA = "data"; // 接口响应数据
+ public static final String RESPONSE_ERROR_DETAIL = "err_detail"; // 异常详细信息
+ public static final String RESPONSE_HTTP_CODE = "http_code"; // 苍蝇状态码,默认200
+ public static final String RESPONSE_HEADER = "header"; // 响应header
+ public static final String RESPONSE_COOKIE = "cookie"; // 响应header
}
diff --git a/src/main/java/cn/zhangdeman/Request.java b/src/main/java/cn/zhangdeman/Request.java
index 1eda4c9..6493f0a 100644
--- a/src/main/java/cn/zhangdeman/Request.java
+++ b/src/main/java/cn/zhangdeman/Request.java
@@ -6,7 +6,6 @@ import com.fasterxml.jackson.annotation.JsonProperty;
import jakarta.servlet.http.HttpServletRequest;
import lombok.Getter;
import lombok.Setter;
-import org.springframework.stereotype.Component;
import java.util.Map;
@@ -14,7 +13,6 @@ import java.util.Map;
@Getter
@Setter
@JsonIgnoreProperties(ignoreUnknown = true) // 忽略未知属性字段
-@Component
public class Request {
@JsonIgnore
HttpServletRequest httpServletRequest;// 原始请求
diff --git a/src/main/java/cn/zhangdeman/Response.java b/src/main/java/cn/zhangdeman/Response.java
new file mode 100644
index 0000000..17582a9
--- /dev/null
+++ b/src/main/java/cn/zhangdeman/Response.java
@@ -0,0 +1,48 @@
+package cn.zhangdeman;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import jakarta.servlet.http.HttpServletResponse;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.HashMap;
+import java.util.Map;
+
+// 响应数据
+@Getter
+@Setter
+@JsonIgnoreProperties(ignoreUnknown = true) // 忽略未知属性字段
+public class Response {
+ @JsonProperty(RecordField.RESPONSE_CODE)
+ private String code; // 响应业务状态码
+ @JsonProperty(RecordField.RESPONSE_MESSAGE)
+ private String message; // 响应消息
+ @JsonProperty(RecordField.RESPONSE_DATA)
+ private Object data; // 响应数据
+ @JsonProperty(RecordField.RESPONSE_ERROR_DETAIL)
+ private Object errorDetail; // 异常详情
+ @JsonProperty(RecordField.RESPONSE_HTTP_CODE)
+ private Integer httpCode = 200; // 响应http状态码
+ @JsonProperty(RecordField.RESPONSE_HEADER)
+ private Map header; // 响应头
+ @JsonProperty(RecordField.RESPONSE_COOKIE)
+ private Map cookie; // 响应cookie
+ @JsonIgnore
+ private HttpServletResponse httpServletResponse; // 响应实例
+
+ public void addHeader(String key, String value) {
+ if (null == this.header) {
+ this.header = new HashMap<>();
+ }
+ this.header.put(key, value);
+ }
+
+ public void addCookie(String key, String value) {
+ if (null == this.cookie) {
+ this.cookie = new HashMap<>();
+ }
+ this.cookie.put(key, value);
+ }
+}
diff --git a/src/main/java/cn/zhangdeman/Context.java b/src/main/java/cn/zhangdeman/RuntimeContext.java
similarity index 86%
rename from src/main/java/cn/zhangdeman/Context.java
rename to src/main/java/cn/zhangdeman/RuntimeContext.java
index bf5c17a..8c5fd53 100644
--- a/src/main/java/cn/zhangdeman/Context.java
+++ b/src/main/java/cn/zhangdeman/RuntimeContext.java
@@ -15,7 +15,7 @@ import java.util.Map;
@Getter
@Setter
@JsonIgnoreProperties(ignoreUnknown = true) // 忽略未知属性字段
-public class Context implements Serializable {
+public class RuntimeContext implements Serializable {
@JsonProperty(RecordField.REQUEST_ID)
private String requestId; // 本次请求request id
@JsonProperty(RecordField.COST)
@@ -36,6 +36,8 @@ public class Context implements Serializable {
private Object responseData; // 响应数据
@JsonProperty(RecordField.REQUEST_INFO)
private Request requestInfo;// 请求信息
+ @JsonProperty(RecordField.RESPONSE_INFO)
+ private Response responseInfo; // 响应信息
// 序列化
@Override
@@ -54,9 +56,9 @@ public class Context implements Serializable {
}
// 反序列化
- public Context unserializable(String json) throws JsonProcessingException {
+ public RuntimeContext unserializable(String json) throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
- return mapper.readValue(json, new TypeReference() {
+ return mapper.readValue(json, new TypeReference() {
});
}
}
diff --git a/src/main/java/cn/zhangdeman/filter/RequestInitFilter.java b/src/main/java/cn/zhangdeman/filter/RequestInitFilter.java
index efc382c..1db1c37 100644
--- a/src/main/java/cn/zhangdeman/filter/RequestInitFilter.java
+++ b/src/main/java/cn/zhangdeman/filter/RequestInitFilter.java
@@ -1,10 +1,7 @@
package cn.zhangdeman.filter;
-import cn.zhangdeman.Context;
-import cn.zhangdeman.Ordered;
-import cn.zhangdeman.RecordField;
-import cn.zhangdeman.Request;
+import cn.zhangdeman.*;
import jakarta.servlet.FilterChain;
import jakarta.servlet.FilterConfig;
import jakarta.servlet.ServletException;
@@ -37,20 +34,20 @@ public class RequestInitFilter extends HttpFilter {
@Override
public void doFilter(HttpServletRequest httpServletRequest, HttpServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
- Context context = new Context();
- setBaseInfo(httpServletRequest, context); // 设置基础信息
- setRequestQuery(context.getRequestInfo()); // 设置请求query信息
- setRequestBody(context.getRequestInfo()); // 设置请求Body
- setRequestHeaderAndCookie(context.getRequestInfo()); // 填充请求信息: header + cookie
- setRequestId(context); // 设置请求ID, 每次请求需要重新生成
- httpServletRequest.setAttribute(RecordField.RUNTIME_THREAD_CONTEXT, context); // 记录到请求上下文中
+ RuntimeContext runtimeContext = new RuntimeContext();
+ setBaseInfo(httpServletRequest, runtimeContext); // 设置基础信息
+ setRequestQuery(runtimeContext.getRequestInfo()); // 设置请求query信息
+ setRequestBody(runtimeContext.getRequestInfo()); // 设置请求Body
+ setRequestHeaderAndCookie(runtimeContext.getRequestInfo()); // 填充请求信息: header + cookie
+ setRequestId(runtimeContext); // 设置请求ID, 每次请求需要重新生成
+ httpServletRequest.setAttribute(RecordField.RUNTIME_THREAD_CONTEXT, runtimeContext); // 记录到请求上下文中
// 继续向后执行
filterChain.doFilter(httpServletRequest, servletResponse);
System.out.println("init request do filter 请求执行完成");
}
// 设置基础信息
- private void setBaseInfo(HttpServletRequest httpServletRequest, Context context) {
+ private void setBaseInfo(HttpServletRequest httpServletRequest, RuntimeContext runtimeContext) {
// request 信息
Request request = new Request();
request.setHttpServletRequest(httpServletRequest);
@@ -59,10 +56,15 @@ public class RequestInitFilter extends HttpFilter {
request.setRequestContentType(httpServletRequest.getContentType()); // 请求类型
request.setRequestUri(httpServletRequest.getRequestURI()); // 请求uri
// server 信息
- context.setServerIp(httpServletRequest.getLocalAddr()); // 服务器IP
- context.setServerHostname(httpServletRequest.getLocalName()); // 服务器名称
- context.setRequestInfo(request); // 请求信息
- context.setStartTimeStamp(System.currentTimeMillis()); // 开始请求时间
+ runtimeContext.setServerIp(httpServletRequest.getLocalAddr()); // 服务器IP
+ runtimeContext.setServerHostname(httpServletRequest.getLocalName()); // 服务器名称
+ runtimeContext.setRequestInfo(request); // 请求信息
+ runtimeContext.setStartTimeStamp(System.currentTimeMillis()); // 开始请求时间
+ // 响应信息
+ Response response = new Response();
+ response.setHeader(new HashMap<>());
+ response.setCookie(new HashMap<>());
+ runtimeContext.setResponseInfo(response); // 响应信息
}
// 设置请求Query
@@ -117,6 +119,10 @@ public class RequestInitFilter extends HttpFilter {
}
// 设置请求ID
- private void setRequestId(Context context) {
+ private void setRequestId(RuntimeContext runtimeContext) {
+ }
+
+ // 响应信息
+ private void setResponse(Response response) {
}
}