Dropwizard添加响应滤波器的所有资源
问题描述:
我如何添加一个过滤器,以我的Dropwizard应用程序,将验证每个资源返回响应?Dropwizard添加响应滤波器的所有资源
我应该使用javax.servlet.Filter
或javax.ws.rs.container.ContainerResponseFilter
有关其用途的任何示例,将不胜感激。
答
添加响应滤波器使用dropwizard所有的资源,你可以做到以下几点:
-
创建一个扩展
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() { } }
-
然后注册相同的您
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, "/*"); } }
您现在应该很好地使用上面定义的
CustomFilter
过滤所有资源。
这就是我所做的,但我在进入过滤器之前不断进入过滤器,而我希望它在完成资源之后执行它。 – Igor
@Igor过滤器用于请求过滤和响应过滤。 。过滤器类中的代码决定了将要过滤的内容和基于什么内容。还因为这个问题没有说明你遇到了什么错误。恕我直言,应该有另一个线程的错误,你遇到了你的配置的细节,而不是像你这样做的要求。 :) – nullpointer