SpringBoot 配置 Filter 实现 JSON 出入参打印

本文介绍了如何在SpringBoot中配置Filter来实现JSON格式的出入参数打印。通过封装流,确保请求和响应的正常传递,并在Filter中记录请求地址、耗时及请求参数,便于调试和日志分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

封装流

JSON 格式出入参,入参使用 @RequestBody 进行接收,数据是以流的方式传入,如果中途拦截下来读取流的数据,则会导致下游无法再次读取,所以必须要把读取的流再封装后继续向下传递。

  • 封装请求
public class TraceServletRequestWrapper extends HttpServletRequestWrapper {
   
   

    TraceServletInputStream traceInputStream;

    public TraceServletRequestWrapper(HttpServletRequest request
在Spring Boot中,你可以创建一个自定义过滤器来处理特定场景下的错误信息并以JSON格式返回给前端。这里有一个简单的例子[^1]: ```java // 定义过滤器类 CustomKeepAliveFilter public class CustomKeepAliveFilter implements Filter { @Override // 当请求达到/dashboard/heart/keepalive时触发 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { try { // 假设这是业务逻辑,如果发生异常,执行error处理 throw new RuntimeException("模拟业务异常"); } catch (Exception e) { // 创建响应并返回JSON错误信息 FilterRegistrationBean.getFilterRegistrationBean().getFilter().doFilter(request, response, new ErrorFilterResponseWrapper(response)); // 自定义ErrorFilterResponseWrapper处理并返回JSON } } // 这里省略了ErrorFilterResponseWrapper的实现,它通常会包装ServletResponse,转换成JSON并写入到响应中 // 如示例[2]所示: private static class ErrorFilterResponseWrapper extends HttpServletResponseWrapper { public ErrorFilterResponseWrapper(HttpServletResponse response) { super(response); } @Override public void sendError(int sc, String msg) throws IOException { // 使用returnJson方法返回JSON错误 returnJson(this, R.error(sc, msg).toString()); } // ... 其他重写方法,如sendRedirect、sendFile等,同样调用returnJson返回JSON } } ``` 当你捕获到异常后,`sendError`方法会被调用,此时调用自定义的`returnJson`方法来构建和发送JSON格式的错误响应[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值