SparkJava:从请求获取路由路径

SparkJava:从请求获取路由路径,java,spark-java,Java,Spark Java,如果我在SparkJava服务器中有一个类似于foo/:id的路由,我希望在处理程序中获取该路由字符串。我可以通过以下方式获取路径信息: Spark.get("foo/:id", (request, response) -> { var matchedRoute = request.pathInfo(); System.out.println(matchedRoute); }) 但是如果我curllocalhost:8080/foo/1,那么这将打印/fo

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

Spark.get("foo/:id", (request, response) -> {
   var matchedRoute = request.pathInfo();
   System.out.println(matchedRoute);
})
但是如果我curl
localhost:8080/foo/1
,那么这将打印
/foo/1
,而不是
/foo/:id


有可能获得SparkJava与请求匹配的路由吗?

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

// 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(“路由”)
,这将为您提供所需的信息。

谢谢您提供的信息。对每条路线都这样做很烦人,但至少是可能的。