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

时间:2016-01-12 20:17:41

标签: java routes spark-java spark-framework

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

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

我想要这条路线:

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

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

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

它仅匹配/api/test/

2 个答案:

答案 0 :(得分:11)

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

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

这可能比映射重复的路线更好。

答案 1 :(得分: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