gpt4 book ai didi

java - Spark 中的 URL 模式

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:20:33 26 4
gpt4 key购买 nike

我正在尝试制作一个与以下 URL 相匹配的过滤器:

/foo/foo/*

/foo/ 下的所有内容以及基本情况 /foo

我有这个过滤器:

    Spark.before("/foo/*", (request, response) -> {
String ticket = request.cookie("session");
if (ticket == null) {
Spark.halt(302);
}
});

当然,当我输入 /foo 时,这不会执行

我尝试了以下但没有成功:

/foo*/foo.*/foo/

有什么办法可以实现吗?或者也许使用 URL 列表?这样我就可以将两个 url 分配给同一个过滤器。

并且请不要说将函数存储在变量中以便我使用它两次,因为我认为这根本不干净..

最佳答案

根据 https://github.com/perwendel/spark/blob/1ecd428c8e2e5b0d1b8f221e9bf9e82429bd73bb/src/main/java/spark/route/RouteEntry.java#L31 (路径匹配发生的地方),看起来你想做的事情是不可能的。

RouteEntry 代码将给定的模式和给定的 url 拆分为 '/' 字符,然后为每个组件查找“匹配项”(相等或通配符)。

这里有更详细的解释:

url /foo/blah 有 2 个部分(在上面链接的 RouteEntry 代码的术语中),而 /foo 有 1 个部分。对于匹配第一个的模式,它必须有 2 个部分:/foo/* 是唯一有意义的部分。但是这个模式有两个部分,这使得 /foo 在第 49 行和第 78 行的 if 检查都失败了。唯一的特殊情况是第 71 行的 hack,它应该使模式 /foo/* 匹配 url /foo/,但不匹配 /foo

关于java - Spark 中的 URL 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28218045/

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