首页 > 解决方案 > 如何在 Spring Boot 控制器中获取原始 POST 数据

问题描述

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

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

在我的课堂上,我没有调用任何getParameter*()方法,但是当 Content-Type 为application/x-www-form-urlencoded. 这意味着 SpringgetParameter*()在处理对我的类的控制之前正在调用其中一种方法。

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


(过度热心的编辑请注意:这个问题是 Spring Boot 特有的。它不是其他“原始 POST 数据”问题的重复。)

标签: spring-bootposturlencode

解决方案


找到了。

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

spring.mvc.hiddenmethod.filter.enabled=false

推荐阅读