【发布时间】:2018-10-03 07:06:51
【问题描述】:
我是 Spring Boot 过滤器的新手
我需要将 servlet(impl) 产生的响应修改为某种模式。
例如, GetProductImpl 会给出
的响应{
"id": 72167,
"merchantId": 3,
"amount": 1,
"state": "Unused"
}
所以在它发送回客户端之前,我需要将其修改为(将响应放在 module 下)(对于所有 servlet 的所有响应)
{
"module":[{
"id": 72167,
"merchantId": 3,
"amount": 1,
"state": "Unused"
}],
"success":true,
"errorCode":null,
"notSuccess":false
}
我正在寻找任何可以让我这样做的方法,因为在 impl 中这样做是没有意义的,因为如果那样的话,我需要为所有 impl 这样做(这很多而且不可行)。
如果有人有任何其他方法可以实现这一点也可以,因为我不知道采取什么方法来做到这一点(java示例也可以)。
谢谢。
我目前使用过滤器的方法似乎碰壁了,因为我使用 addFilter、addFilterBefore 甚至 addFilterAfter,它们都需要有 out 过滤器类,我不知道它是什么,并专注于网络安全的东西(UsernamePasswordAuthenticationFilter::class.java).
.addFilterBefore(JWTAuthenticationFilter(tokenAuthenticationService, objectMapper), UsernamePasswordAuthenticationFilter::class.java)
【问题讨论】:
-
使用
ResponseBodyAdvice。你不能使用过滤器。您必须在响应写入输出流之前进入,因为在那之后不包装原始 http 响应对象就太晚了(丑陋)。
标签: java spring servlets filter kotlin