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

Match empty parameter in URL with spark-java

我正在使用 Spark Java 来匹配具有命名参数的 URL。

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

这可以按预期工作,例如/hello/Dr/Mabuse/.

我想允许不指定标题组件,即接受 /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

由于不能选择空段,因此您必须复制。但是使用路径组,它可以是最小的重复。在你的情况下,是这样的:

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(向下滚动一点)。