我想使用子资源来实现更好的分组,但我的一个资源是两个不同资源的子资源。例如,如果我有父母这样的父母/ 1我也有父母/ 1 /儿童/ 1的孩子,我希望能够访问属于父母或特定孩子的信息。像/ parents / 1 / info和parents / 1 / children / 1 / info之类的东西。使用Jersey 2.x实现这一目标的最佳方法是什么?我试过这样做,但我注意到两个'info'端点都以相同的方法结束,我需要检查请求上下文以确定如何处理请求。有没有更好的方法来做这个没有依赖注入/传递路径参数?
编辑:
@Path("parents")
public class ParentResource {
@Path("{parent-id}/children")
public ChildResource getChild(@PathParam("parent-id") String parentId) {
return new ChildResource(parentId);
}
@Path("{parent-id}/info")
public InfoResource getInfo(@PathParam("parent-id") String parentId) {
return new InfoResource(parentId);
}
}
public class ChildResource {
private String parentId;
public ChildResource(String parentId) {
this.parentId = parentId;
}
@Path("{child-id}/info")
public InfoResource getInfo(@PathParam("child-id") String childId) {
return new InfoResource(parentId, childId);
}
}
public class InfoResource {
private String parentId;
private String childId;
public InfoResource(String parentId) {
this(parentId, null);
}
public InfoResource(String parentId, String childId) {
this.parentId = parentId;
this.childId = childId;
}
@GET
public String getInfo() {
if (childId == null)
return "Info of parent";
return "Info of child";
}
}