[英]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.