SparkJava:从请求中获取路由路径
SparkJava: Get route path from request
如果我的 SparkJava 服务器中有类似 foo/:id
的路由,我想在我的处理程序中获取该路由字符串。我可以获得如下所示的 pathInfo:
Spark.get("foo/:id", (request, response) -> {
var matchedRoute = request.pathInfo();
System.out.println(matchedRoute);
})
但是如果我卷曲 localhost:8080/foo/1
,那么这将打印 /foo/1
,而不是 /foo/:id
。
能否获取到SparkJava匹配请求的路由?
没有固有的方法可以做到这一点,因为匿名函数不接收路由本身作为参数。但是您可以在 'before' 部分将路由添加到请求中:
// 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")
,这将为您提供所需的内容.
如果我的 SparkJava 服务器中有类似 foo/:id
的路由,我想在我的处理程序中获取该路由字符串。我可以获得如下所示的 pathInfo:
Spark.get("foo/:id", (request, response) -> {
var matchedRoute = request.pathInfo();
System.out.println(matchedRoute);
})
但是如果我卷曲 localhost:8080/foo/1
,那么这将打印 /foo/1
,而不是 /foo/:id
。
能否获取到SparkJava匹配请求的路由?
没有固有的方法可以做到这一点,因为匿名函数不接收路由本身作为参数。但是您可以在 'before' 部分将路由添加到请求中:
// 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")
,这将为您提供所需的内容.