将 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(向下滚动一点)。
我正在使用 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(向下滚动一点)。