RestEasy 可以扩展@Path 吗?
Can RestEasy extends @Path?
@Path("a")
public class A {}
@Path("b")
public class B extends A {
@GET
getList(){}
}
我想要一个 GET 路径 localhost/rest/v1/a/b
有办法吗?简单的扩展并不能解决问题
注释可以继承,但它们不会被扩展或连接或类似的东西。这么说吧——B
上的 @Path
完全抹去了 A
上的 @Path
。 (如果没有 B
的 @Path
,它会从 A
继承 @Path
,可能会导致部署冲突,但这既不存在也不存在。)
我想到了两种方法来做到这一点。第一个,当然,简单地涉及这样做:
@Path("a/b")
public class B ...
第二个涉及子资源(the JAX-RS 2.0 spec的第3.4.1节)...
@Path("a")
public class A {
@Path("b")
public B getB() {
return new B();
}
}
public class B {
// blah blah blah
}
这里我想强调两件事:
B
没有自己的 @Path
。它是一个子资源,只能通过 A
才能直接访问。 B 的总路径是应用程序路径、A
的路径和子资源定位器 (getB()
) 上的 B
s 路径的串联,具有适当的 /
s .
B
不继承自 A
。如果是,正如我上面所说,它将继承 A
的 @Path。这可能会产生冲突,或导致 A
被忽略以支持更具体的子类型 B
。 (有关注释继承的详细信息,请参阅规范的第 3.6 节,有关如何为给定请求选择匹配 class/method 的确切信息,请参阅第 3.7 节。)
@Path("a")
public class A {}
@Path("b")
public class B extends A {
@GET
getList(){}
}
我想要一个 GET 路径 localhost/rest/v1/a/b
有办法吗?简单的扩展并不能解决问题
注释可以继承,但它们不会被扩展或连接或类似的东西。这么说吧——B
上的 @Path
完全抹去了 A
上的 @Path
。 (如果没有 B
的 @Path
,它会从 A
继承 @Path
,可能会导致部署冲突,但这既不存在也不存在。)
我想到了两种方法来做到这一点。第一个,当然,简单地涉及这样做:
@Path("a/b")
public class B ...
第二个涉及子资源(the JAX-RS 2.0 spec的第3.4.1节)...
@Path("a")
public class A {
@Path("b")
public B getB() {
return new B();
}
}
public class B {
// blah blah blah
}
这里我想强调两件事:
B
没有自己的@Path
。它是一个子资源,只能通过A
才能直接访问。 B 的总路径是应用程序路径、A
的路径和子资源定位器 (getB()
) 上的B
s 路径的串联,具有适当的/
s .B
不继承自A
。如果是,正如我上面所说,它将继承A
的 @Path。这可能会产生冲突,或导致A
被忽略以支持更具体的子类型B
。 (有关注释继承的详细信息,请参阅规范的第 3.6 节,有关如何为给定请求选择匹配 class/method 的确切信息,请参阅第 3.7 节。)