带有查询字符串的 Restlet 路由

Restlet routing with query string

我有一个当前路由如下的资源:

router.attach("/{version}/content/{language}", ContentResource.class);

我想向该资源添加一个查询字符串,如下所示:

router.attach("/{version}/content/{language}?segment={segment}", ContentResource.class);

问题是,当我尝试通过路由访问资源时,我无法进入它。

有人可以解释为什么以及如何解决吗?

您不必在路由定义级别指定查询参数。如果要使用名为 segment 的查询参数,请按以下方法操作:

  • 路由定义

    router.attach("/{version}/content/{language}", ContentResource.class);
    
  • 获取查询参数值

    public class ContentResource extends ServerResource {
        String value = getQueryValue("segment");
        (...)
    }
    

希望对你有帮助, 蒂埃里

您应该定义路由行为:

TemplateRoute myRoute = router.attach("/{version}/content/{language}?segment={segment}", ContentResource.class);
myRoute.setMatchingQuery(true);