覆盖方法上的类级别@Path注释

时间:2014-08-08 13:36:20

标签: java web-services jax-rs

我有两个包含处理文件管理的端点的java文件。一个叫做FileResource.java,另一个叫DirectoryResource.java。 DirectoryResource.java只有一个方法,即 createDirectory 。我需要将该方法移到FileResource.java并完全删除DirectoryResource.java。

问题是createDirectory方法的端点当前是 / api / dir / create 。当我将它移到FileResource.java时,它不再工作了,因为类级@Path注释位于" / file /" 而不是 " /目录/"

这是我的问题:是否可以覆盖方法上的@Path注释,以便在将其移动到FileResource类后可以维护端点/ api / dir / create?

我想确保那些使用api的用户不必重构他们的代码以指向新的端点。

//FileResource.java
...

@Path("/file/")
public class FileResource() {

  @POST
  @Path("create")
  public Response createFile(String fileContent) {
    ...
    return Response.ok().build();
  }

  ...
}


//DirectoryResource.java
...

@Path("/dir/")
public class DirectoryResource() {

  @POST
  @Path("create")
  public Response createDirectory(String path) {
    ...
    return Response.ok().build();
  }

  ...
}

1 个答案:

答案 0 :(得分:3)

没有'覆盖' @Path注释。他们添加

在使用@Path("create")注释的班级中使用@Path("dir")注释的方法将解析为/dir/create

您可以通过在正确的通道中定义正确的方法来定义路径。只有在需要更改路径时才能移动方法和删除通道。

我认为没有理由需要在不更改API的情况下更改频道,但如果仍然需要,则应该在Apache上使用mod_rewrite进行播放。但我建议不要这样做。只需保持渠道结构清洁。