13

我注意到 Spark 框架中的一些内容。它不匹配尾部斜杠与映射路由。因此它将 /api/test 和 /api/test/ 视为不同的 URI。

如果有办法将它们通配在一起,那很好,但似乎没有。我错过了什么吗?

我想要这条路线:

Spark.get("/api/test", (req, res) -> {
            return "TEST OK";
        });

匹配 /api/test 或 /api/test/。就目前而言,它仅匹配 /api/test,如果我将其切换为:

Spark.get("/api/test/", (req, res) -> {
            return "TEST OK";
        });

它只匹配/api/test/

4

2 回答 2

12

您可以使用重定向设置过滤器,例如:

Spark.before((req, res) -> {
    String path = req.pathInfo();
    if (path.endsWith("/"))
        res.redirect(path.substring(0, path.length() - 1));
});

这可能比映射重复路由要好。

于 2017-02-07T13:39:16.577 回答
7

它似乎在 2013 年之前被问过,但在 2015 年关闭(我假设没有实施):

https://github.com/perwendel/spark/issues/97

路由应该匹配和不匹配斜杠 #97

jsnoriegam 于 2013 年 8 月 31 日打开此问题

ryber 在 2013 年 10 月 14 日向 ryber/spark 添加了引用此问题的提交

Tipsy 于 2015 年 11 月 22 日添加了功能请求标签

perwendel 于 2015 年 11 月 23 日关闭此网站

ryber 提出了一个针对此问题的修复请求:

https://github.com/ryber/spark/commit/556597e679dc224719188f8d27d8ba10e58fd8bb

但是,这似乎不是当前SimpleRouteMatcher课程的一部分:

https://github.com/perwendel/spark/blob/ded78b7fa9b78749c0d5f6776bba9c9cd3cfb6fb/src/main/java/spark/route/SimpleRouteMatcher.java

于 2016-01-12T21:26:40.087 回答