泽西岛的新手(REST Framework for Java),我正在尝试设置两个资源,在两个共享根路径的独立类中,我遇到了问题。 所以,我有类似的东西:
@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;
}
}
这些顶级资源拥有大量子资源,因此我正在寻找组织它们的最佳方式。任何帮助将不胜感激。
答案 0 :(得分: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);
}
}
答案 1 :(得分:1)
将Pets
课程的路径从@Path("/users")
更改为@Path("/users/{user_uuid}/pets")