Dropwizard添加响应滤波器的所有资源

问题描述:

我如何添加一个过滤器,以我的Dropwizard应用程序,将验证每个资源返回响应?Dropwizard添加响应滤波器的所有资源

我应该使用javax.servlet.Filterjavax.ws.rs.container.ContainerResponseFilter

有关其用途的任何示例,将不胜感激。

添加响应滤波器使用所有的资源,你可以做到以下几点:

  1. 创建一个扩展javax.servlet.Filter一个CustomFilter -

    public class CustomFilter implements Filter { 
    
        public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { 
         // your filtering task 
         chain.doFilter(req, res); 
        } 
    
        public void init(FilterConfig filterConfig) { 
        } 
    
        public void destroy() { 
        } 
    } 
    
  2. 然后注册相同的您Service扩展Application -

    public class CustomService extends Application<CustomConfig> { //CustomConfig extend 'io.dropwizard.Configuration' 
    
        public static void main(String[] args) throws Exception { 
        new CustomService().run(args); 
        } 
    
        @Override 
        public void initialize(Bootstrap<CustomConfig> someConfigBootstrap) { 
        // do some initialization 
        } 
    
        @Override 
        public void run(CustomConfig config, io.dropwizard.setup.Environment environment) throws Exception { 
        ... // resource registration 
        environment.servlets().addFilter("Custom-Filter", CustomFilter.class) 
         .addMappingForUrlPatterns(java.util.EnumSet.allOf(javax.servlet.DispatcherType.class), true, "/*"); 
        } 
    } 
    
  3. 您现在应该很好地使用上面定义的CustomFilter过滤所有资源。

+0

这就是我所做的,但我在进入过滤器之前不断进入过滤器,而我希望它在完成资源之后执行它。 – Igor

+1

@Igor过滤器用于请求过滤和响应过滤。 。过滤器类中的代码决定了将要过滤的内容和基于什么内容。还因为这个问题没有说明你遇到了什么错误。恕我直言,应该有另一个线程的错误,你遇到了你的配置的细节,而不是像你这样做的要求。 :) – nullpointer

我想你想使用的是javax.servlet.Filter

A filter is an object that performs filtering tasks on either the request to a resource (a servlet or static content), or on the response from a resource, or both.

更多信息here

+0

我也想过这个问题,你有一个例子吗? – Igor