Java 正在验证嵌套资源的路径

Java 正在验证嵌套资源的路径,java,web-services,rest,jersey,Java,Web Services,Rest,Jersey,我使用Jersey实现了一个带有嵌套资源的RESTful服务。这是我目前拥有的一个基本示例: @Path(“/sites”) 公共类站点资源{ @得到 @路径(“/{siteId}”) 公共站点获取(@PathParam(“siteId”)long siteId){ Site Site=//查找站点ID为的站点 if(站点==空){ 抛出新的WebApplicationException(Response.Status.NOT_FOUND); } 返回站点; } } @路径(“/sites/{s

我使用Jersey实现了一个带有嵌套资源的RESTful服务。这是我目前拥有的一个基本示例:

@Path(“/sites”)
公共类站点资源{
@得到
@路径(“/{siteId}”)
公共站点获取(@PathParam(“siteId”)long siteId){
Site Site=//查找站点ID为的站点
if(站点==空){
抛出新的WebApplicationException(Response.Status.NOT_FOUND);
}
返回站点;
}
}
@路径(“/sites/{siteId}/articles”)
公共类文章资源{
@得到
@路径(“/articleId”)
公共文章获取(@PathParam(“articleId”)long articleId){
Article=//查找具有articleId的文章
if(article==null){
抛出新的WebApplicationException(Response.Status.NOT_FOUND);
}
退货物品;
}
}
现在想象一下,我有一个站点,站点ID=123,还有一篇文章,文章ID=456。文章资源的正确路径是
/sites/123/articles/456
。 但在我当前的实现中,siteId完全不相关。您还可以使用
/sites/789/articles/456
访问资源

articlesource#get
方法中,我当然可以检查指定的站点是否存在。但这似乎相当不切实际。如果添加另一个嵌套资源,则必须重复所有检查

因为在我看来这是一个常见的用例,所以我感到惊讶的是,我没有找到解决这个问题的任何来源。所以我想知道我是否完全偏离了轨道,是否有更好的方法处理嵌套资源


谢谢

这篇文章似乎是该网站的一个子网站。因此,在Java和/或数据库端可能存在某种关系,您可以用来获取和验证站点和文章

我将检索该站点,包括它的子站点,并查看请求的文章是否在这些子站点上


如果站点和文章不相关,您的整个URI方案将不会反映您的资源。

是的,站点和文章之间的关系也会反映在数据库中。问题是哪里是检索站点(或者更通用的父对象)并检查其是否存在的最佳位置?如果我在
articlesource#get
中执行此操作,我必须在每个子资源的每个方法中执行相同的检查。