gpt4 book ai didi

java - 在 ServletModule.configureServlets 中注册过滤器时如何排除 URL?

转载 作者:行者123 更新时间:2023-12-01 04:33:26 24 4
gpt4 key购买 nike

我使用sitebricks在 Google App Engine 上构建 RESTful API。我为我的 GuiceCreator 中的所有/rest/* URL 注册了两个过滤器。 如何使用 filter("/rest/*) 语法但排除一个特定 URL? 我希望/rest/* 下的所有内容都被过滤,除了/rest/1/foo。

我可以枚举所有实际需要过滤的 URL。但这样做的明显缺点是,如果我决定添加或删除端点,它将很难维护。

new ServletModule() {
@Override
protected void configureServlets() {
filter("/rest/*").through(ObjectifyFilter.class);
filter("/rest/*").through(SomeOtherFilter.class);
}
}

我正在寻找类似的结构

filter("/rest/*").exclude("/rest/1/foo").through(ObjectifyFilter.class).

最佳答案

Thanks to dhanji ,我通过使用 filterRegex() 而不是 filter() 修复了这个问题。在我的正则表达式中,我使用 negative lookbehind assertion 。这将过滤除以 /[0-9]/foo 结尾的所有 /rest/.* URL。

new ServletModule() {
@Override
protected void configureServlets() {
filter("^/rest/.*(?<!/\\d/foo)$").through(ObjectifyFilter.class);
filter("^/rest/.*(?<!/\\d/foo)$").through(SomeOtherFilter.class);
}
}

关于java - 在 ServletModule.configureServlets 中注册过滤器时如何排除 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17656388/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com