spring-boot - 如何在 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 数据”问题的重复。)
解决方案
找到了。
我只需要禁用 HiddenHttpMethodFilter,无论如何我都不会使用它:
spring.mvc.hiddenmethod.filter.enabled=false
推荐阅读
- python - 从列表中获取项目并将字符串插入到另一个列表中的响应项目
- git - Sourcetree 和 git bash 不同步?
- java - 静态方法中的 TimerTask 在执行之前会被垃圾收集吗?
- sql - SQL SELECT 动态列名
- python - Selenium webdriver,无需制作PC服务器
- django - 将 django 变量导出到 python 文件
- ios - AVPlayer 不支持 swift 中的外部 webVtt 文件字幕
- android - 如何优化循环调用的房间数据库查询以提高性能
- django - 带有docker的nginx gunicorn:如何使用多个dockerfile
- r - 无法理解示例函数在做什么