我使用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
答案 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(向下滚动一下)。