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

How to get the raw POST data in Spring Boot controller

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

在我的 class 中,我需要读取原始 POST 数据,即使 Content-Type 是 application/x-www-form-urlencoded。这在 Servlet 规范中有点棘手,因为为了做到这一点,您需要在 [=35 之前调用 request.getInputStream()request.getReader() =] 您可以访问任何 request.getParameter*() 方法。否则,后者将消耗输入流,将不再可用。

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

的控制之前调用了 getParameter*() 方法之一

哪个 class 正在这样做,我该如何预防?


(请注意过分热心的编辑:此问题特定于 Spring Boot。它不是其他 "raw POST data" 问题的重复。)

找到了。

我只需要禁用 HiddenHttpMethodFilter,反正我不会使用它:

spring.mvc.hiddenmethod.filter.enabled=false