当前位置: 首页 > 知识库问答 >
问题:

在HandlerInterceptor获取RequestBody和ResponseBody

黄锋
2023-03-14

我必须实现的逻辑是记录所有的请求与主体服务到数据库。

据我所知,在Controller中,我们可以使用@requestbody@responsebody。我可以在HandlerInterceptor重用它们吗?

共有1个答案

强阳曜
2023-03-14

您可以扩展RequestBodyAdviceAdapter并实现方法AfterBodyRead:

@ControllerAdvice
public MyRequestBodyAdviceAdapter extends RequestBodyAdviceAdapter {

    @Override
    public Object afterBodyRead(Object body, HttpInputMessage inputMessage, MethodParameter parameter,
            Type targetType, Class<? extends HttpMessageConverter<?>> converterType) {

        // write body -your input dto- to logs or database or whatever

        return body;
    }

}

RequestBodyAdvision出现在HandlerInterceptor之前的presetp请求链中。它正好是在http请求inputstream转换为您的对象之后。

 类似资料:
  • 我创建了一个简单的REST服务(POST)。但是当我从postman@RequestBody调用这个服务时,它没有收到任何值。 我的java Bean对象如下: System.out.println将null打印为PolcyNumber的值。 请帮我解决这个问题。 我在请求体中传递的JSON是 我甚至在postman中设置了到

  • 问题内容: 我正在使用Spring Boot 1.4.1,其中包括。我有一个带有注释的类和带有注释的方法,用于处理服务代码引发的异常。处理这些异常时,我想记录和POST操作请求的一部分,因此我可以看到导致问题的请求正文,在我看来,该问题对于诊断至关重要。 在Spring Docs中,方法的方法签名可以包括多种内容。通常可以从此处通过或获取请求正文,但是如果我的控制器方法像我的所有方法一样解析请求正

  • 我是新来spring boot的,当我从Postman那里获得RestController中的JSON时,我遇到了一个小问题。 当我从Postmat发送带有属性的请求时,RequestBody中总是为null。 这是我的Rest控制器 我的请求是这样的: 我用邮递员把这些属性 我试图将第一个字符设置为小写,但它不起作用。 这是提出的例外情况: 提前谢谢大家。

  • 我在下面显示了我的代码片段,我试图发送obj作为,我的控制器无法分配请求的值。 我得到异常,因为。我经历了很多与此相关的问题,但没有一个对我有用。我预测这个问题可能会因为JSON对象结构而发生。我也尝试了下面的对象也不工作。

  • 我有这样基于方面的日志记录: 当我使用RequestBody执行请求时,它工作正常,会触发advice。但是,当我执行没有

  • 我使用的是Spring Boot1.4.1,其中包括Spring-Web-4.3.3。我有一个用注释的类和用注释的方法,以处理服务代码引发的异常。在处理这些异常时,我希望记录作为PUT和POST操作请求的一部分的,这样我就可以看到导致问题的请求体,在我的情况下,这对于诊断至关重要。 在每个Spring文档中,方法的方法签名可以包括各种内容,包括。请求正文通常可以从这里通过或获得,但是如果我的控制器