基础请求信息初始化
This commit is contained in:
parent
2ac14ec562
commit
7cf8d3a6c9
@ -24,4 +24,6 @@ public class RecordField {
|
||||
public static final String REQUEST_PATH_PARAM = "path_param"; // path参数
|
||||
public static final String REQUEST_SIZE = "size"; // 参数大小
|
||||
public static final String REQUEST_URI = "uri"; // 请求接口
|
||||
|
||||
public static final String RUNTIME_THREAD_CONTEXT = "runtime_thread_context"; // 运行时线程上下文
|
||||
}
|
||||
|
@ -6,6 +6,7 @@ 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;
|
||||
|
||||
@ -13,6 +14,7 @@ import java.util.Map;
|
||||
@Getter
|
||||
@Setter
|
||||
@JsonIgnoreProperties(ignoreUnknown = true) // 忽略未知属性字段
|
||||
@Component
|
||||
public class Request {
|
||||
@JsonIgnore
|
||||
HttpServletRequest httpServletRequest;// 原始请求
|
||||
@ -33,7 +35,9 @@ public class Request {
|
||||
@JsonProperty(RecordField.REQUEST_PATH_PARAM)
|
||||
private Map<String, String> requestPathParam; // path 参数
|
||||
@JsonProperty(RecordField.REQUEST_BODY)
|
||||
private Map<String, String> requestBody; // 请求body
|
||||
private String requestBody; // 请求body
|
||||
@JsonIgnore
|
||||
private byte[] requestBodyRaw; // 原始请求body
|
||||
@JsonProperty(RecordField.REQUEST_URI)
|
||||
private String requestUri; // 请求接口
|
||||
}
|
||||
|
@ -3,10 +3,12 @@ package cn.zhangdeman.filter;
|
||||
|
||||
import cn.zhangdeman.Context;
|
||||
import cn.zhangdeman.Ordered;
|
||||
import cn.zhangdeman.RecordField;
|
||||
import cn.zhangdeman.Request;
|
||||
import jakarta.servlet.FilterChain;
|
||||
import jakarta.servlet.FilterConfig;
|
||||
import jakarta.servlet.ServletException;
|
||||
import jakarta.servlet.ServletInputStream;
|
||||
import jakarta.servlet.annotation.WebFilter;
|
||||
import jakarta.servlet.http.Cookie;
|
||||
import jakarta.servlet.http.HttpFilter;
|
||||
@ -14,6 +16,8 @@ import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import org.springframework.core.annotation.Order;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Arrays;
|
||||
import java.util.Enumeration;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
@ -32,13 +36,17 @@ public class RequestInitFilter extends HttpFilter {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doFilter(HttpServletRequest httpServletRequest, HttpServletResponse servletResponse, FilterChain filterChain) {
|
||||
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); // 记录到请求上下文中
|
||||
// 继续向后执行
|
||||
filterChain.doFilter(httpServletRequest, servletResponse);
|
||||
System.out.println("init request do filter 请求执行完成");
|
||||
}
|
||||
|
||||
// 设置基础信息
|
||||
@ -75,9 +83,12 @@ public class RequestInitFilter extends HttpFilter {
|
||||
}
|
||||
|
||||
// 设置请求Body
|
||||
private void setRequestBody(Request request) {
|
||||
private void setRequestBody(Request request) throws IOException {
|
||||
HttpServletRequest httpServletRequest = request.getHttpServletRequest(); // 原始请求实例
|
||||
// httpServletRequest.getInputStream()
|
||||
ServletInputStream servletInputStream = httpServletRequest.getInputStream();
|
||||
byte[] requestBody = servletInputStream.readAllBytes();
|
||||
request.setRequestBodyRaw(requestBody); // 原始请求Body
|
||||
request.setRequestBody(Arrays.toString(requestBody)); // 请求body
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user