有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Spark框架:匹配尾随斜杠或不匹配尾随斜杠

我注意到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/


共 (2) 个答案

  1. # 1 楼答案

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

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

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

  2. # 2 楼答案

    2013年之前似乎有人问过这个问题,但在2015年结束了(我假设没有实施):

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

    Routes should match with and without trailing slash #97

    jsnoriegam opened this issue on Aug 31, 2013

    ryber added a commit to ryber/spark that referenced this issue on Oct 14, 2013

    tipsy added the Feature request label on Nov 22, 2015

    perwendel closed this on Nov 23, 2015

    ryber提出了拉取请求,并对此问题进行了修复:

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

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

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