有没有办法在Spring Boot Filter中获取HTTP Request主体内容?

Mar*_*rco 3 spring spring-boot

我需要获取发布到RestController的原始内容,这是对原始输入进行一些处理.为了实现这一目标,我正在寻找一种方法来获取原始内容而不会干扰过滤器链.这可能吗?

min*_*ion 7

以下是controllerAdvice的示例,您可以像在控制器中一样访问RequestBody和RequestHeader.Model属性方法基本上是添加在所有页面或控制器流中使用的模型属性.它在控制器方法启动之前被调用.它提供了更清晰的方式来访问RESTful功能而不是复杂的方式.

@ControllerAdvice(annotations = RestController.class)
public class ControllerAdvisor {

    @ModelAttribute
    public void addAttributes(HttpServletRequest request, HttpServletResponse response,Model model, @RequestBody String requestString, @RequestHeader(value = "User-Agent") String userAgent) {
        // do whatever you want to do on the request body and header. 
        // with request object you can get the request method and request path etc.
        System.out.println("requestString" + requestString);
        System.out.println("userAgent" + userAgent);
        model.addAttribute("attr1", "value1");
        model.addAttribute("attr2", "value2");
    }   

}
Run Code Online (Sandbox Code Playgroud)

  • 请告知这将消耗请求 - 下一个处理(控制器)将不会收到任何信息。 (2认同)