具有相同路径的REST控制器

时间:2016-05-30 08:42:01

标签: java spring rest jersey

我正在使用Spring框架与jersey一起实现REST。 我有以下两种模式的路径

设置1:

/top/{top_id}/<some string>
ex:

/top/{top_id}/book

/top/{top_id}/pen

/top/{top_id}/dog

设置2:

/top/{top_id}/middle/{middle_id}/<some string>
ex:

/top/{top_id}/middle/{middle_id}/book

/top/{top_id}/middle/{middle_id}/pen

/top/{top_id}/middle/{middle_id}/dog

由于这些工作在不同的层面上工作(在顶层设置1,在中层设置2),我想为它们创建不同的控制器类。

    @Component
    public class Top{
    }

    @Component
    public class Middle{
    }

我遇到的问题是两组都有/ top / {top_id}常见。

我不知道该怎么用作在类上面写的@Path注释的值。我尝试删除它,但泽西岛没有认识到这个课程。请建议一种方法来实现这一点。我试图这样做,因为每层有大约100条路径。我不想将它们全部保存在一个文件中。谢谢。

1 个答案:

答案 0 :(得分:0)

经过orcale docs后,我找到了一种方法让它发挥作用。

@Path("/top/{top_id}")
@Component
public class Top{

  @GET
  @Path("/book")
  @Produces({"application/json"})
  public getBooks(){
  }

}

@Path("/top/{top_id}/middle/{middle_id}")
@Component
public class Middle{

  @GET
  @Path("/book")
  @Produces({"application/json"})
  public getBooks(){
  }

}

有效。使用这样的方法可以将它们分成不同的控制器文件。