spring - 如何在 Spring Boot 过滤器中获取 HTTP 请求正文内容?

标签 spring spring-boot

我想获取发布到 RestController 的原始内容。我需要它对原始输入进行一些处理。

如何在不干扰过滤器链的情况下获取原始正文内容?

最佳答案

这是 controllerAdvice 的示例,您可以在其中像在 Controller 中一样访问 RequestBody 和 RequestHeader。模型属性方法基本上是添加在所有页面或 Controller 流中使用的模型属性。它在 Controller 方法开始之前被调用。它提供了访问 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");
    }   

}

关于spring - 如何在 Spring Boot 过滤器中获取 HTTP 请求正文内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29152431/

相关文章:

java - 预先注册可调用参数错误

java - 彼此有 2 个本地事务(在不同的数据源上)

java - JdbcTemplate 不适用于 Spring Boot 项目

java - 是否存在 'new' 优先于 Spring Autowire 的情况

java - 如何在 spring web-flux Controller 中接收 GET 请求的多部分或有效负载数据

java - 请求正文中的父类(super class) - 'application/xml;charset=UTF-8' 不受支持

amazon-web-services - AWS XRAY SDK 问题 : Failed to begin subsegment named 'Amazon S3' : segment cannot be found

spring - 在 Gradle 中使用 jettyRunWar 或 jettyRun 与 Spring Boot 应用程序只会在浏览器中列出一个目录

spring boot 2.0 监听多个端口

spring - 有记录 Spring @Value 字段的好方法吗?