拦截 JAX-RS web 服务响应以添加 JSON 字段

Intercept JAX-RS web service response to add JSON field

我有一个 JAX-RS Web 服务,它 return 是一个 Response 对象,如下所示(在 WebLogic 12.2.1 中是 运行)。它将 return 对客户端的 JSON 响应。是否可以编写一个拦截器或过滤器,以便在调用 Web 服务时 returned,它会在 JSON 响应中添加一个额外的字段?

@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
@Path("LogIn")
public Response logIn(@Context HttpServletRequest request, Parameters requestParameters) {...}

提前致谢。

如果使用 Jersey,那么您可以尝试实现 ContainerResponseFilter

在覆盖 filter() 时,它提供 ContainerResponseContext 对象,使您可以访问使用 getEntity() 方法发送的响应。

您可以修改此对象并将其设置回响应中。

public class ResponseInterceptor implements ContainerResponseFilter{

    @Override
    public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext)
            throws IOException {
        Object obj = responseContext.getEntity();
        // Modify the Response obj as per need
        responseContext.setEntity(obj);
    }
}