繁体   English   中英

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

[英]Override class level @Path annotation on the method

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

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

这是我的问题: 是否可以覆盖方法上的@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();
  }

  ...
}

@Path注释没有“重写”。 他们补充道

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM