【问题标题】:SparkJava: Get route path from requestSparkJava:从请求中获取路由路径
【发布时间】:2021-02-26 16:27:56
【问题描述】:

如果我的 SparkJava 服务器中有类似 foo/:id 的路由,我想在我的处理程序中获取该路由字符串。我可以得到 pathInfo 如下:

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

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

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

【问题讨论】:

    标签: java spark-java


    【解决方案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"),这将为您提供所需的内容。

    【讨论】:

    • 感谢您的信息。对每条路线都这样做很烦人,但至少有可能。
    猜你喜欢
    • 1970-01-01
    • 2013-09-26
    • 1970-01-01
    • 2011-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-13
    相关资源
    最近更新 更多