SparkJava:从请求中获取路由路径

时间:2021-02-25 18:25:50

标签: java spark-java

如果我的 SparkJava 服务器中有一个类似于 foo/:id 的路由,我想在我的处理程序中获取该路由字符串。我可以获得如下所示的路径信息:

Spark.get("foo/:id", (request, response) -> {
   var matchedRoute = request.pathInfo();
   System.out.println(matchedRoute);
})

但是如果我卷曲 localhost:8080/foo/1,那么这将打印 /foo/1,而不是 /foo/:id

是否可以获得 SparkJava 匹配请求的路由?

1 个答案:

答案 0 :(得分:1)

没有固有的方法可以做到这一点,因为匿名函数不会将路由本身作为参数接收。但是您可以在“之前”部分将路由添加到请求中:

// For every route add these two lines:
String API_PATH_1 = "foo/:id";
before(API_PATH_1, (req, res) -> req.attribute("route", API_PATH_1));

get(API_PATH_1, (req, res) -> {
    String route = req.attribute("route");
    String matchedRoute = req.pathInfo();
    System.out.println("Route:         " + route);
    System.out.println("Matched Route: " + matchedRoute);
});

它添加了一点代码,但如果您在所有路由中都与此模式保持一致,那么在 get() 部分中,您始终可以调用 req.attribute("route"),它会给您想要的东西。< /p>

相关问题