在dropwizard中添加帖子匹配过滤器

时间:2014-09-18 23:05:36

标签: jersey dropwizard

从drop wizard的文档中,它使用针对滤镜配置的平针织过滤器。在请求到达注册资源之前调用过滤器。但是,我想装饰从我的资源中提供的响应。有没有办法根据网址格式配置匹配后过滤器?

1 个答案:

答案 0 :(得分:3)

第一个选项

如果您希望过滤掉请求或在它们到达您的资源之前修改它们,Yourclass会实现ContainerRequestFilter

如果要在传递响应后过滤掉响应或修改响应,Yourclass会实现ContainerResponseFilter。

第二个选项 : 您可以使用servlet过滤器 - > http://dropwizard.io/manual/core.html#servlet-filters。如果页面在您查看时已更改,请在此处输入实际说明:

public class DateNotSpecifiedServletFilter implements javax.servlet.Filter {
    // Other methods in interface ommited for brevity

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        if (request instanceof HttpServletRequest) {
            String dateHeader = ((HttpServletRequest) request).getHeader(HttpHeaders.DATE);

            if (dateHeader == null) {
                chain.doFilter(request, response); // This signals that the request should pass this filter
            } else {
                HttpServletResponse httpResponse = (HttpServletResponse) response;
                httpResponse.setStatus(HttpStatus.BAD_REQUEST_400);
                httpResponse.getWriter().print("Date Header was not specified");
            }
        }
    }
}

在你的跑步中():

environment.servlets().addFilter("DateHeaderServletFilter", new DateHeaderServletFilter())
                      .addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST), true, "/*");

您可以配置为true或false,如果它在之前或之后。希望这会有所帮助。