gpt4 book ai didi

java - 在 Spring 过滤器中更改 HttpServletRequest 的 POST 主体

转载 作者:太空宇宙 更新时间:2023-11-04 12:30:27 24 4
gpt4 key购买 nike

我有一个 Spring 过滤器:

  public class MyFilter implements Filter {

public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {

}
}

现在,如果此请求是 POST,我想在请求到达 Controller 之前写入/修改请求的 POST 正文。我有办法做到这一点吗?我环顾四周,发现了大量关于如何阅读正文但不写的信息

最佳答案

还有一种选择,但不知道是否符合您的要求。也许它可以帮助你。以下方法使用 Spring AspectJ。根据您的需要更改以下代码。

@Component
@Aspect
public class WebServiceAPILoggingAspect {

private static Logger logger = Logger.getLogger(WebServiceAPILoggingAspect.class);

@Before("execution(* com.progress.d2c.web.service.*.controller.*.*(..))")
public Object controllerMethodsAdvice(ProceedingJoinPoint joinPoint) throws Throwable {
Object proceedResponse = null;
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest();
String payload = IOUtils.toString(request.getInputStream(), "UTF-8");
// Now write your code...
try {
proceedResponse = joinPoint.proceed();
} catch (Exception e) {
logger.error("Failed to complete the operation.");
throw e;
}
return proceedResponse;
}
}

关于java - 在 Spring 过滤器中更改 HttpServletRequest 的 POST 主体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37900436/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com