泽西岛资源结构

时间:2016-11-19 02:29:14

标签: java rest jersey

我想使用子资源来实现更好的分组,但我的一个资源是两个不同资源的子资源。例如,如果我有父母这样的父母/ 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";
    }
}

0 个答案:

没有答案