Dropwizard中的自定义Jetty过滤器

jbe*_*itz 4 jetty dropwizard

我正在尝试在我的Dropwizard实例中添加自定义标头过滤器,以检查请求的版本是否同步到Dropwizard实例的版本.

我看到你可以FilterBuilder用来添加码头CrossOriginFilters.但是,我无法弄清楚如何设置自定义过滤器.

谢谢

dom*_*arr 12

通过Environment类.

https://dropwizard.github.io/dropwizard/manual/core.html#environments

@Override
public void run(MyApplicationConfiguration configuration, Environment environment) {
    environment.servlets().addFilter("Custom-Filter-Name", new MyCustomFilter()).addMappingForUrlPatterns(EnumSet.allOf(DispatcherType.class), true, "/*");
}
Run Code Online (Sandbox Code Playgroud)

您可以通过更改选择哪些Dispatch类型 EnumSet.allOf(DispatcherType.class)

  • @Maksim.那是不对的.dropwizard的0.7.x中addFilter的第一个参数是过滤器名称,而不是映射.它需要调用`addMappingForUrlPatterns(EnumSet <DispatcherType> dispatcherTypes,boolean isMatchAfter,String ... urlPatterns)` (4认同)

cra*_*igb 7

这就是我使用Dropwwizard 0.7.1让它工作的方式(API似乎已经从我在那里找到的其他例子中改变了)

在您的应用程序的运行方法中:

final FilterRegistration.Dynamic cors = environment.servlets().addFilter("crossOriginRequsts", CrossOriginFilter.class);
cors.addMappingForUrlPatterns(EnumSet.allOf(DispatcherType.class), true, "/*");
Run Code Online (Sandbox Code Playgroud)

https://gist.github.com/craigbeck/fb71818063175b9b4210