簡體   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