编程语言
首页 > 编程语言> > java-在方法上重写类级别的@Path注释

java-在方法上重写类级别的@Path注释

作者:互联网

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

问题在于createDirectory方法的端点当前为/ api / dir / create.当我将其移到FileResource.java时,它将不再起作用,因为类级别的@Path注释位于“ / file /”而不是“ / dir /”.

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

我想确保那些使用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();
  }

  ...
}

解决方法:

@Path注释没有“覆盖”.他们补充.

用@Path(“ dir”)注释的类中以@Path(“ create”)注释的方法将解析为/ dir / create.

您可以通过在正确的通道中定义正确的方法来定义路径.仅在需要更改路径时,才移动方法并删除通道.

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

标签:jax-rs,web-services,java
来源: https://codeday.me/bug/20191121/2051454.html