繁体   English   中英

提供从Jersey的父资源到子资源的链接

[英]Provide link to sub-resources from parent resource in Jersey

我在Jersey中实现了一个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 / parent应该给我一个指向SubResourceA,SubResourceB和SubResourceC的链接。

有谁知道实现这种功能的标准约定? 如果可能的话,特别是在JAX-RS / Jersey中。

谢谢

您不需要返回实例。 您可以返回该类,然后让Jersey为您创建它。 你可以简单地做

@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方法,该方法返回到所有子资源的链接”

这打破了定义Sub资源定位器方法的条件。 不应使用任何HTTP方法注释对其进行注释。 这些注释应仅在子资源类的方法中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM