0

泽西岛的新手(Java 的 REST 框架),我正在尝试在共享根路径的两个单独的类中设置两个资源,但我遇到了问题。所以,我有类似的东西:

@Path("/users")
public class User extends RestSupport {

    @GET
    @Path("/{user_uuid}")
    public String get(@PathParam("user_uuid") String uuid) {    
        return "Hello User " + uuid;
    }
}

上述课程有效。但是,我想在一个单独的类中创建一个子资源。但是当我这样做时,似乎会产生 URI 命名冲突。所以,在这里,我想获取特定用户的所有宠物

@Path("/users")
public class Pets extends RestSupport {

    @GET
    @Path("/{user_uuid}/pets")
    public String get(@PathParam("user_uuid") String uuid) {    
        return "Hello Pets " + uuid;
    }
}

这些顶级资源有很多子资源,所以我正在寻找组织它们的最佳方式。任何帮助,将不胜感激。

4

2 回答 2

1

如果您希望 Jersey 将调用委托给子资源,请不要@GET在根资源方法上添加 HTTP 注释。Users考虑一个User类:

public class User {

  String uuid;
  User(String id) { this.uuid = id; }

  @GET
  public String get() { return "Hello user " + uuid; }

  @GET
  @Path("/pets")
  public String getPets() { return "Hello pets " + uuid; }

}

然后调整你的Users资源:

@Path("/users")
public class Users  {

  @Path("/{user_uuid}")
  public User get(@PathParam("user_uuid") String uuid) {
    // Get the user from the DAO here...
    return new User(uuid);
  }

}
于 2012-09-12T22:14:40.323 回答
1

Change the path of Pets class from
@Path("/users")
to
@Path("/users/{user_uuid}/pets")

于 2012-09-13T04:50:55.877 回答