2015-10-06 79 views
0

我有一个在泽西岛实施的RESTful服务,由顶级资源和许多子资源组成。为了说明:提供泽西州父资源的子资源链接

父资源:

@Path("parent") 
public class ParentResource { 
    private SubResourceA subResourceA; 
    private SubResourceB subResourceB; 
    private SubResourceC subResourceC; 

    public ParentResource() { 
     subResourceA = new SubResourceA(); 
     subResourceB = new SubResourceB(); 
     subResourceC = new SubResourceC(); 
    } 

    @Path("a") 
    public SubResourceA getA() { 
     return subResourceA; 
    } 

    @Path("b") 
    public SubResourceB getB() { 
     return subResourceB; 
    } 

    @Path("c") 
    public SubResourceC getC() { 
     return subResourceC; 
    } 

我所寻找的是定义对返回到这个类提供的所有子资源的链接(类似于如何在该ParentResource类GET方法文件系统,如果你选择一个文件夹里有文件夹,那么你会看到子文件夹)。

没有这样的实现,如果我点击GET/parent,那么我将从我的web服务中获得一个404。理想情况下,GET /父母应该给我一个SubResourceA,SubResourceB和SubResourceC的链接。

有没有人知道实现这种功能的标准惯例?如果可能,特别在JAX-RS/Jersey中。

谢谢

回答

0

您不需要返回实例。您可以返回课程,让泽西为您创建。你可以简单地这样做

@Path("parent") 
public class ParentResource { 

    @Path("{x}") 
    public Class getX(@PathParam("x") String x) { 
     switch (x) { 
      case "a": return SubResourceA.class; 
      case "b": return SubResourceB.class; 
      case "c": return SubResourceC.class; 
      default: throw new WebApplicationException(404); 
     } 
    } 

    public static class SubResourceA { 
     @GET    // @PathParam is forwarded parent 
     public String getA(@PathParam("x") String x) { 
      return "A"; 
     } 
    } 
} 

“我所寻找的是定义在返回到所有子资源的链接ParentResource类GET方法”

,打破什么定义子资源定位器方法。它不应该使用任何HTTP方法注释进行注释。这些注释只应在子资源类的方法中。