【发布时间】:2016-10-07 22:49:53
【问题描述】:
当有人点击我的服务 API 时,我需要能够修改我收到的响应的 HTTP 响应正文。我尝试使用 ConatinerResponseFilter 来修改正文,但我相信它只会修改标题而不是响应正文。谁能告诉我如何修改 HTTP 响应正文、消息和状态?
【问题讨论】:
-
response.data将有您的响应正文console.log(response);以查看您的 API 返回什么
当有人点击我的服务 API 时,我需要能够修改我收到的响应的 HTTP 响应正文。我尝试使用 ConatinerResponseFilter 来修改正文,但我相信它只会修改标题而不是响应正文。谁能告诉我如何修改 HTTP 响应正文、消息和状态?
【问题讨论】:
response.data 将有您的响应正文 console.log(response); 以查看您的 API 返回什么
这可以通过WriterInterceptor来实现:
@Provider
public class CustomWriterInterceptor implements WriterInterceptor {
@Override
public void aroundWriteTo(WriterInterceptorContext context)
throws IOException, WebApplicationException {
OutputStream outputStream = context.getOutputStream();
// Manipulate the HTTP entity using the OutputStream
context.setOutputStream(outputStream);
context.proceed();
}
}
在answer 中,您将找到一个示例,说明如何使用 Jackson 修改在 请求负载 中发送的 JSON(可以使用相同的想法来操作 响应负载)。
【讨论】:
诀窍是使用包装器,因为正文在作为流读取时变得可访问
Modify HttpServletRequest body
检查这个或只是在线检查修改过滤器中的正文
注意:如果你正在做一个网络服务,那么使用像 CXF 这样的框架可以很容易地修改
【讨论】: