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