将URL中的空参数与spark-java匹配

时间:2017-05-03 17:21:38

标签: spark-java

我使用Spark Java将URL与命名参数匹配。

get("/hello/:title/:name/", (request, response) -> { return "Hello: " + request.params(":title") + "." + request.params(:name); })

这可以按预期工作,例如的 /你好/ DR /马布斯/

我想不允许指定标题组件,即接受 / hello // Friend / 。 此路径与SparkJava不匹配,因为convertRouteToList函数特定地跳过空段。 https://github.com/perwendel/spark/blob/master/src/main/java/spark/utils/SparkUtils.java#L38

如何在不重复路径映射的情况下实现所需的功能(考虑路径中的多个可选片段)?

我不打算开始讨论SparkJava是否正确吞下多个斜杠,因为他们可能有充分的理由在那里添加代码。 正确讨论了双斜线,例如在https://webmasters.stackexchange.com/questions/8354/what-does-the-double-slash-mean-in-urls/8381#8381

1 个答案:

答案 0 :(得分:0)

由于空片段不是一个选项,您必须复制。但是使用路径组,它可以是最小的重复。在你的情况下,像这样:

path("/hello", () -> {
    String msg = "Hello ";
    get("/:name",        (req, res) -> msg + req.params("name"));
    get("/:title/:name", (req, res) -> msg + req.params("title") + "." + req.params("name"));
});

不确定它的Spark版本是什么,但对于2.5.5它确实有用。

您可以阅读更多相关内容here(向下滚动一下)。