【问题标题】:Provide link to sub-resources from parent resource in Jersey提供从泽西岛的父资源到子资源的链接
【发布时间】:2015-10-06 17:28:55
【问题描述】:

我在 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,我会从我的网络服务中得到一个 404。理想情况下,GET /parent 应该给我一个指向 SubResourceA、SubResourceB 和 SubResourceC 的链接。

有人知道实现此类功能的标准约定吗?如果可能,特别是在 JAX-RS/Jersey 中。

谢谢

【问题讨论】:

    标签: java rest jersey jax-rs


    【解决方案1】:

    您不需要返回实例。你可以只返回类,让 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 方法注释对其进行注释。那些注解只能在子资源类的方法中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-08
      • 2016-05-07
      • 1970-01-01
      相关资源
      最近更新 更多