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

时间:2019-03-25 10:51:41

标签: spring-boot post urlencode

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

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

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

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


(过分热心的编辑者请注意:此问题特定于Spring Boot。它不是其他“原始POST数据”问题的重复。)

1 个答案:

答案 0 :(得分:1)

找到了。

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

spring.mvc.hiddenmethod.filter.enabled=false