Spark框架:匹配或不跟踪斜杠

mty*_*son 11 java routes spark-java spark-framework

我在Spark框架中注意到了一些东西.它与使用映射路由的尾部斜杠不匹配.所以它认为/ api/test和/ api/test /是不同的URI.

如果有一种方法可以将它们一起通配,那就好了,但似乎没有.我错过了什么吗?

我想要这条路线:

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

匹配/ api/test OR/api/test /.就目前而言,它只匹配/ api/test,如果我将其切换为:

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

它只匹配 /api/test/

Raf*_*ins 12

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

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

这可能比映射重复的路由更好.


Fre*_*ijn 5

它似乎在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