企业如何通过vue小程序开发满足高效运营与合规性需求
1007
2022-12-09
SpringBoot打印POST请求原始入参body体方式
目录SpringBoot打印POST请求原始入参body体1、首先定义过滤器配置2、实现1中的过滤器Post接收不到body里的参数(对象参数)检查注解检查实体检查Content-Type
SpringBoot打印POST请求原始入参body体
1、首先定义过滤器配置
package com.choice.o2o.device.common.config;
import com.choice.o2o.device.common.filter.LogFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class FilterConfig {
@Bean
public FilterRegistrationBean registFilter() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(new LogFilter());
registration.addUrlPatterns("/*");
registration.setName("LogFilter");
registration.setOrder(1);
return registration;
}
}
2、实现1中的过滤器
package com.choice.o2o.three.code.config.log;
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.Ordered;
import org.springframework.web.filter.OncePerRequestFilter;
import org.springframework.web.util.ContentCachingRequestWrapper;
import org.springframework.web.util.ContentCachingResponseWrapper;
import org.springframework.web.util.WebUtils;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Enumeration;
@Slf4j
public class LogParamFilter extends OncePerRequestFilter implements Ordered {
// put filter at the end of all other filters to make sure we are processing after all others
private int order = Ordered.LOWEST_PRECEDENCE - 8;
public static final String SPLIT_STRING_M = "=";
public static final String SPLIT_STRING_DOT = ", ";
@Override
public int getOrder() {
return order;
}
@Override
protected void dFuhCHIoFilterInternal(HttpServletRequest request, HttpServletResponse response,
FilterChain filterChain) throws ServletException, IOException {
ContentCachingRequestWrapper wrapperRequest = new ContentCachingRequestWrapper(request);
ContentCachingResponseWrapper wrapperResponse = new ContentCachingResponseWrapper(response);
String urlParams = getRequestParams(request);
filterChain.doFilter(wrapperRequest, wrapperResponse);
String requestBodyStr = getRequestBody(wrapperRequest);
log.info("params[{}] | request body:{}", urlParams, requestBodyStr);
String responseBodyStr = getResponseBody(wrapperResponse);
log.info("response body:{}", responseBodyStr);
wrapperResponse.copyBodyToResponse();
}
/**
* 打印请求参数
*
* @param request
*/
private String getRequestBody(ContentCachingRequestWrapper request) {
ContentCachingRequestWrapper wrapper = WebUtils.getNativeRequest(request, ContentCachingRequestWrapper.class);
if (wrapper != null) {
byte[] buf = wrapper.getContentAsByteArray();
if (buf.length > 0) {
String payload;
try {
payload = new String(buf, 0, buf.length, wrapper.getCharacterEncoding());
} catch (UnsupportedEncodingException e) {
payload = "[unknown]";
}
return payload.replaceAll("\\n", "");
}
}
return "";
}
/**
* 打印返回参数
*
* @param response
*/
private String getResponseBody(ContentCachingResponseWrapper response) {
ContentCachingResponseWrapper wrapper = WebUtils.getNativeResponse(response,
ContentCachingResponseWrapper.class);
if (wrapper != null) {
byte[] buf = wrapper.getContentAsByteArray();
if (buf.length > 0) {
String payload;
try {
payload = new String(buf, 0, buf.length, wrapper.getCharacterEncoding());
} catch (UnsupportedEncodingException e) {
http:// payload = "[unknown]";
}
return payload;
}
}
return "";
}
/**
* 获取请求地址上的参数
*
* @param request
* @return
*/
public static String getRequestParams(HttpServletRequest request) {
StringBuilder sb = new StringBuilder();
Enumeration
//获取请求参数
while (enu.hasMoreElements()) {
String name = enu.nextElement();
sb.append(name + SPLIT_STRING_M).append(request.getParameter(name));
if (enu.hasMoreElements()) {
sb.append(SPLIT_STRING_DOT);
}
}
return sb.toString();
}
}
Post接收不到body里的参数(对象参数)
检查注解
@ResponseBody
@RequestBody
检查实体
接收实体类,set、get方法是否正确
检查Content-Type
是否是application/json
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~