如何在 Spring Boot 控制器中获取原始 POST 数据



我有一个普通的控制器类extends AbstractController,我通过创建一个新的SimpleUrlHandlerMapping bean将其插入到Spring的处理程序映射机制中。

在我的课堂上,我需要读取原始的 POST 数据,即使内容类型application/x-www-form-urlencoded。这在 Servlet 规范中有些棘手,因为为了做到这一点,您需要在访问任何request.getParameter*()方法之前调用request.getInputStream()request.getReader()。否则,后者将消耗输入流,并且将不再可用。

在我的类中,我没有调用任何getParameter*()方法,但是当内容类型application/x-www-form-urlencoded时,我仍然看到一个空的请求正文。这意味着 Spring 在处理对我的类的控制之前调用了getParameter*()方法之一。

哪个班级正在这样做,我该如何防止它?


(过分热心的编辑注意:这个问题是特定于Spring Boot的。它不是其他"原始 POST 数据"问题的重复。

找到了。

我只需要禁用HiddenHttpMethodFilter,无论如何我都没有使用它:

spring.mvc.hiddenmethod.filter.enabled=false

最新更新