[英]Jersey @Path annotation mandatory at class level
我有一個類:
public class TestService {
@Path("/v1/test1/list")
public Response getTest1() {
}
@Path("/v1/test2/list")
public Response getTest2() {
}
}
如果我不在類級別給出 @Path 注釋,那么這個類就不會被識別為 REST 資源,但我不能為這個類提供“/v1”路徑,因為已經有另一個帶有 @Path("/v1") 的類.
有什么可能的解決方法,使此類被識別為休息資源
根資源類是POJO(普通舊式Java對象)被標注有
@Path
,具有注釋的與至少一種方法@Path
或資源方法指示符注釋如@GET
,@PUT
,@POST
,@DELETE
。
正如Justas已經提到的,一種可能的解決方案是將@Path("")
注釋添加到TestService
類。 然而,它聞起來並不好:
@Path("")
public class TestService {
@GET
@Path("/v1/test1/list")
public Response getTest1() {
...
}
@GET
@Path("/v1/test2/list")
public Response getTest2() {
...
}
}
我不知道你的項目是什么樣的,但我會有兩個類,而不是一個單一的類,設計如下:
@Path("/v1/test1")
public class TestService1 {
@GET
@Path("/list")
public Response getTest1() {
...
}
}
@Path("/v1/test2")
public class TestService2 {
@GET
@Path("/list")
public Response getTest2() {
...
}
}
您可以添加空路徑@Path("")
或@Path("/")
。 但是,此問題可能表明您應該以不同的方式設計代碼。
@Path
注釋用於指定可以訪問資源和 API 的URI
。 在這種情況下,資源是REST
Web 服務本身。 因此,此注釋存在於類級別以及方法級別。 必須使用@Path
注釋來注釋REST
Web 資源類。 因此,如果用戶想通過資源“HelloWorld”上下文訪問“Countries”,則:
類級別的資源將具有@Path("/")
。 這是類級別的默認注釋。 API 級別的資源將具有@Path("Countries")
注釋。 作為最佳實踐,類級別的路徑注釋應該是限定 Web 服務的名詞,方法級別的注釋可以是名詞或操作(例如分別為 user 和 add-user)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.