在 Jersey ,可以添加 ContainerRequestFilter 或 ContainerResponseFilter
public class RequestFilter implements ContainerRequestFilter {
@Override
public ContainerRequest filter(ContainerRequest containerRequest) {
// logic
}
}
public class ResponseFilter implements ContainerResponseFilter {
@Override
public ContainerResponse filter(ContainerRequest request,
ContainerResponse response) {
// logic
}
}
两者都使用PackagesResourceConfig添加:
PackagesResourceConfig prc = new PackagesResourceConfig("com.company.xxx");
prc.getContainerRequestFilters().add(new RequestFilter());
prc.getContainerResponseFilters().add(new ResponseFilter());
尽管响应过滤器也可以访问请求,但在调用 endpoints 之后调用它 . 我们需要的是能够在调用 endpoints 之前访问同一过滤器中的请求和响应 . 请求筛选器在 endpoints 之前调用,但无权访问响应 .
似乎无法添加可以访问 HttpServletRequest 和 HttpServletResponse 的标准 javax.servlet.Filter ,并且在调用 endpoints 之前调用它 .
谢谢