【发布时间】:2019-03-20 13:53:57
【问题描述】:
我需要阅读 POST 请求正文而不使用它。
我已经在我的自定义 HandlerInterceptor 中以多种方式进行了尝试,但没有任何效果。我试图包装和缓存请求正文的所有尝试在某些时候都不起作用,甚至可能是因为我无法控制 Spring 所做的事情。
所以我想到了另一件事:在某些时候,Spring 会尝试将请求主体映射到一个对象并将其传递给正确的控制器。我可以在调用Controller之前拦截这个动作并获取那个对象吗?
【问题讨论】:
-
为什么需要在请求处理之前读取正文?你需要用它做什么?您只能处理一次请求,因此如果不重复读取,它将无法工作(例如在 Spring 的日志过滤器中)。
-
因为我更喜欢在单个点记录每个请求,而不是在每个控制器的每个方法中插入一个日志。
-
因为 Spring 已经有特殊的过滤器,使用它们而不是自己滚动。还有其他现有的解决方案。归结为将响应存储在内存中并在请求包装器中实现读取。
-
您是否为过滤器启用了调试日志记录?否则它不会记录任何内容。
-
它只会记录正在处理的有效负载。如果你没有绑定/处理它不会记录的有效负载。
标签: java spring rest spring-mvc post